summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/api/jsep_ice_candidate.cc
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/api/jsep_ice_candidate.cc')
-rw-r--r--third_party/libwebrtc/api/jsep_ice_candidate.cc76
1 files changed, 76 insertions, 0 deletions
diff --git a/third_party/libwebrtc/api/jsep_ice_candidate.cc b/third_party/libwebrtc/api/jsep_ice_candidate.cc
new file mode 100644
index 0000000000..e18e6e28af
--- /dev/null
+++ b/third_party/libwebrtc/api/jsep_ice_candidate.cc
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "api/jsep_ice_candidate.h"
+
+#include <memory>
+#include <utility>
+
+#include "absl/algorithm/container.h"
+#include "absl/memory/memory.h"
+
+namespace webrtc {
+
+std::string JsepIceCandidate::sdp_mid() const {
+ return sdp_mid_;
+}
+
+int JsepIceCandidate::sdp_mline_index() const {
+ return sdp_mline_index_;
+}
+
+const cricket::Candidate& JsepIceCandidate::candidate() const {
+ return candidate_;
+}
+
+std::string JsepIceCandidate::server_url() const {
+ return candidate_.url();
+}
+
+JsepCandidateCollection::JsepCandidateCollection() = default;
+
+JsepCandidateCollection::JsepCandidateCollection(JsepCandidateCollection&& o)
+ : candidates_(std::move(o.candidates_)) {}
+
+size_t JsepCandidateCollection::count() const {
+ return candidates_.size();
+}
+
+void JsepCandidateCollection::add(JsepIceCandidate* candidate) {
+ candidates_.push_back(absl::WrapUnique(candidate));
+}
+
+const IceCandidateInterface* JsepCandidateCollection::at(size_t index) const {
+ return candidates_[index].get();
+}
+
+bool JsepCandidateCollection::HasCandidate(
+ const IceCandidateInterface* candidate) const {
+ return absl::c_any_of(
+ candidates_, [&](const std::unique_ptr<JsepIceCandidate>& entry) {
+ return entry->sdp_mid() == candidate->sdp_mid() &&
+ entry->sdp_mline_index() == candidate->sdp_mline_index() &&
+ entry->candidate().IsEquivalent(candidate->candidate());
+ });
+}
+
+size_t JsepCandidateCollection::remove(const cricket::Candidate& candidate) {
+ auto iter = absl::c_find_if(
+ candidates_, [&](const std::unique_ptr<JsepIceCandidate>& c) {
+ return candidate.MatchesForRemoval(c->candidate());
+ });
+ if (iter != candidates_.end()) {
+ candidates_.erase(iter);
+ return 1;
+ }
+ return 0;
+}
+
+} // namespace webrtc