blob: 6dacde629c7dd765f6bc86163dec0b9ac9087ab3 [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
Yves Gerey3e707812018-11-28 15:47:4913#include <memory>
henrike@webrtc.org28e20752013-07-10 00:45:3614
Steve Anton10542f22019-01-11 17:11:0015#include "pc/webrtc_sdp.h"
henrike@webrtc.org28e20752013-07-10 00:45:3616
Harald Alvestrandfc6b8712021-01-05 10:51:0817// This file contains JsepIceCandidate-related functions that are not
18// included in api/jsep_ice_candidate.cc. Some of these link to SDP
19// parsing/serializing functions, which some users may not want.
20// TODO(bugs.webrtc.org/12330): Merge the two .cc files somehow.
21
henrike@webrtc.org28e20752013-07-10 00:45:3622namespace webrtc {
23
24IceCandidateInterface* CreateIceCandidate(const std::string& sdp_mid,
25 int sdp_mline_index,
henrike@webrtc.org28e20752013-07-10 00:45:3626 const std::string& sdp,
27 SdpParseError* error) {
28 JsepIceCandidate* jsep_ice = new JsepIceCandidate(sdp_mid, sdp_mline_index);
29 if (!jsep_ice->Initialize(sdp, error)) {
30 delete jsep_ice;
31 return NULL;
32 }
33 return jsep_ice;
34}
35
Steve Anton27ab0e52018-07-23 22:11:5336std::unique_ptr<IceCandidateInterface> CreateIceCandidate(
37 const std::string& sdp_mid,
38 int sdp_mline_index,
39 const cricket::Candidate& candidate) {
Mirko Bonadei317a1f02019-09-17 15:06:1840 return std::make_unique<JsepIceCandidate>(sdp_mid, sdp_mline_index,
41 candidate);
Steve Anton27ab0e52018-07-23 22:11:5342}
43
henrike@webrtc.org28e20752013-07-10 00:45:3644JsepIceCandidate::JsepIceCandidate(const std::string& sdp_mid,
45 int sdp_mline_index)
Yves Gerey665174f2018-06-19 13:03:0546 : sdp_mid_(sdp_mid), sdp_mline_index_(sdp_mline_index) {}
henrike@webrtc.org28e20752013-07-10 00:45:3647
48JsepIceCandidate::JsepIceCandidate(const std::string& sdp_mid,
49 int sdp_mline_index,
50 const cricket::Candidate& candidate)
51 : sdp_mid_(sdp_mid),
52 sdp_mline_index_(sdp_mline_index),
Yves Gerey665174f2018-06-19 13:03:0553 candidate_(candidate) {}
henrike@webrtc.org28e20752013-07-10 00:45:3654
Yves Gerey665174f2018-06-19 13:03:0555JsepIceCandidate::~JsepIceCandidate() {}
henrike@webrtc.org28e20752013-07-10 00:45:3656
Harald Alvestrandfc6b8712021-01-05 10:51:0857JsepCandidateCollection JsepCandidateCollection::Clone() const {
58 JsepCandidateCollection new_collection;
59 for (const auto& candidate : candidates_) {
60 new_collection.candidates_.push_back(std::make_unique<JsepIceCandidate>(
61 candidate->sdp_mid(), candidate->sdp_mline_index(),
62 candidate->candidate()));
63 }
64 return new_collection;
65}
66
henrike@webrtc.org28e20752013-07-10 00:45:3667bool JsepIceCandidate::Initialize(const std::string& sdp, SdpParseError* err) {
68 return SdpDeserializeCandidate(sdp, this, err);
69}
70
71bool JsepIceCandidate::ToString(std::string* out) const {
72 if (!out)
73 return false;
74 *out = SdpSerializeCandidate(*this);
75 return !out->empty();
76}
77
henrike@webrtc.org28e20752013-07-10 00:45:3678} // namespace webrtc