blob: 1e97ad42d84a95a6fa9e033c595273960b18faeb [file] [log] [blame]
henrike@webrtc.org28e20752013-07-10 00:45:361/*
kjellanderb24317b2016-02-10 15:54:432 * Copyright 2012 The WebRTC project authors. All Rights Reserved.
henrike@webrtc.org28e20752013-07-10 00:45:363 *
kjellanderb24317b2016-02-10 15:54:434 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
henrike@webrtc.org28e20752013-07-10 00:45:369 */
10
Steve Anton10542f22019-01-11 17:11:0011#include "api/jsep_ice_candidate.h"
henrike@webrtc.org28e20752013-07-10 00:45:3612
Steve Anton10542f22019-01-11 17:11:0013#include "pc/webrtc_sdp.h"
henrike@webrtc.org28e20752013-07-10 00:45:3614
Harald Alvestrandfc6b8712021-01-05 10:51:0815// This file contains JsepIceCandidate-related functions that are not
16// included in api/jsep_ice_candidate.cc. Some of these link to SDP
17// parsing/serializing functions, which some users may not want.
18// TODO(bugs.webrtc.org/12330): Merge the two .cc files somehow.
19
henrike@webrtc.org28e20752013-07-10 00:45:3620namespace webrtc {
21
22IceCandidateInterface* CreateIceCandidate(const std::string& sdp_mid,
23 int sdp_mline_index,
henrike@webrtc.org28e20752013-07-10 00:45:3624 const std::string& sdp,
25 SdpParseError* error) {
26 JsepIceCandidate* jsep_ice = new JsepIceCandidate(sdp_mid, sdp_mline_index);
27 if (!jsep_ice->Initialize(sdp, error)) {
28 delete jsep_ice;
29 return NULL;
30 }
31 return jsep_ice;
32}
33
Steve Anton27ab0e52018-07-23 22:11:5334std::unique_ptr<IceCandidateInterface> CreateIceCandidate(
35 const std::string& sdp_mid,
36 int sdp_mline_index,
37 const cricket::Candidate& candidate) {
Mirko Bonadei317a1f02019-09-17 15:06:1838 return std::make_unique<JsepIceCandidate>(sdp_mid, sdp_mline_index,
39 candidate);
Steve Anton27ab0e52018-07-23 22:11:5340}
41
henrike@webrtc.org28e20752013-07-10 00:45:3642JsepIceCandidate::JsepIceCandidate(const std::string& sdp_mid,
43 int sdp_mline_index)
Yves Gerey665174f2018-06-19 13:03:0544 : sdp_mid_(sdp_mid), sdp_mline_index_(sdp_mline_index) {}
henrike@webrtc.org28e20752013-07-10 00:45:3645
46JsepIceCandidate::JsepIceCandidate(const std::string& sdp_mid,
47 int sdp_mline_index,
48 const cricket::Candidate& candidate)
49 : sdp_mid_(sdp_mid),
50 sdp_mline_index_(sdp_mline_index),
Yves Gerey665174f2018-06-19 13:03:0551 candidate_(candidate) {}
henrike@webrtc.org28e20752013-07-10 00:45:3652
Yves Gerey665174f2018-06-19 13:03:0553JsepIceCandidate::~JsepIceCandidate() {}
henrike@webrtc.org28e20752013-07-10 00:45:3654
Harald Alvestrandfc6b8712021-01-05 10:51:0855JsepCandidateCollection JsepCandidateCollection::Clone() const {
56 JsepCandidateCollection new_collection;
57 for (const auto& candidate : candidates_) {
58 new_collection.candidates_.push_back(std::make_unique<JsepIceCandidate>(
59 candidate->sdp_mid(), candidate->sdp_mline_index(),
60 candidate->candidate()));
61 }
62 return new_collection;
63}
64
henrike@webrtc.org28e20752013-07-10 00:45:3665bool JsepIceCandidate::Initialize(const std::string& sdp, SdpParseError* err) {
66 return SdpDeserializeCandidate(sdp, this, err);
67}
68
69bool JsepIceCandidate::ToString(std::string* out) const {
70 if (!out)
71 return false;
72 *out = SdpSerializeCandidate(*this);
73 return !out->empty();
74}
75
henrike@webrtc.org28e20752013-07-10 00:45:3676} // namespace webrtc