Replace RTCTransportInternal::SignalCandidatePairChange sigslot
and add a callback instead.
Bug: webrtc:12598
Change-Id: I41ee044fc45f15bbf9fc31ba9067cef2a5071faf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/329060
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41263}
diff --git a/p2p/base/ice_transport_internal.h b/p2p/base/ice_transport_internal.h
index 73e1089..358e102 100644
--- a/p2p/base/ice_transport_internal.h
+++ b/p2p/base/ice_transport_internal.h
@@ -332,8 +332,12 @@
// SignalNetworkRouteChanged.
sigslot::signal2<IceTransportInternal*, const Candidate&> SignalRouteChange;
- sigslot::signal1<const cricket::CandidatePairChangeEvent&>
- SignalCandidatePairChanged;
+ void SetCandidatePairChangeCallback(
+ absl::AnyInvocable<void(const cricket::CandidatePairChangeEvent&)>
+ callback) {
+ RTC_DCHECK(!candidate_pair_change_callback_);
+ candidate_pair_change_callback_ = std::move(callback);
+ }
// Invoked when there is conflict in the ICE role between local and remote
// agents.
@@ -386,6 +390,9 @@
absl::AnyInvocable<void(IceTransportInternal*, const Candidates&)>
candidates_removed_callback_;
+
+ absl::AnyInvocable<void(const cricket::CandidatePairChangeEvent&)>
+ candidate_pair_change_callback_;
};
} // namespace cricket
diff --git a/p2p/base/p2p_transport_channel.cc b/p2p/base/p2p_transport_channel.cc
index a46f38e..166dbe8 100644
--- a/p2p/base/p2p_transport_channel.cc
+++ b/p2p/base/p2p_transport_channel.cc
@@ -1871,8 +1871,9 @@
} else {
pair_change.estimated_disconnected_time_ms = 0;
}
-
- SignalCandidatePairChanged(pair_change);
+ if (candidate_pair_change_callback_) {
+ candidate_pair_change_callback_(pair_change);
+ }
}
++selected_candidate_pair_changes_;
diff --git a/p2p/base/p2p_transport_channel_unittest.cc b/p2p/base/p2p_transport_channel_unittest.cc
index 100804f..4954f93 100644
--- a/p2p/base/p2p_transport_channel_unittest.cc
+++ b/p2p/base/p2p_transport_channel_unittest.cc
@@ -3483,8 +3483,10 @@
&P2PTransportChannelPingTest::OnReadyToSend);
ch->SignalStateChanged.connect(
this, &P2PTransportChannelPingTest::OnChannelStateChanged);
- ch->SignalCandidatePairChanged.connect(
- this, &P2PTransportChannelPingTest::OnCandidatePairChanged);
+ ch->SetCandidatePairChangeCallback(
+ [this](const cricket::CandidatePairChangeEvent& event) {
+ OnCandidatePairChanged(event);
+ });
}
Connection* WaitForConnectionTo(
diff --git a/pc/jsep_transport_controller.cc b/pc/jsep_transport_controller.cc
index a6396a5..fc88d61 100644
--- a/pc/jsep_transport_controller.cc
+++ b/pc/jsep_transport_controller.cc
@@ -455,8 +455,11 @@
this, &JsepTransportController::OnTransportStateChanged_n);
dtls->ice_transport()->SignalIceTransportStateChanged.connect(
this, &JsepTransportController::OnTransportStateChanged_n);
- dtls->ice_transport()->SignalCandidatePairChanged.connect(
- this, &JsepTransportController::OnTransportCandidatePairChanged_n);
+ dtls->ice_transport()->SetCandidatePairChangeCallback(
+ [this](const cricket::CandidatePairChangeEvent& event) {
+ RTC_DCHECK_RUN_ON(network_thread_);
+ OnTransportCandidatePairChanged_n(event);
+ });
dtls->SubscribeDtlsHandshakeError(
[this](rtc::SSLHandshakeError error) { OnDtlsHandshakeError(error); });