From 09b2fb65da5f3a2d7d90d60fc32ed283bd026212 Mon Sep 17 00:00:00 2001 From: Harald Alvestrand Date: Tue, 28 Nov 2023 13:57:49 +0000 Subject: [PATCH] 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 Commit-Queue: Harald Alvestrand Cr-Commit-Position: refs/heads/main@{#41263} --- p2p/base/ice_transport_internal.h | 11 +++++++++-- p2p/base/p2p_transport_channel.cc | 5 +++-- p2p/base/p2p_transport_channel_unittest.cc | 6 ++++-- pc/jsep_transport_controller.cc | 7 +++++-- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/p2p/base/ice_transport_internal.h b/p2p/base/ice_transport_internal.h index 73e1089bed..358e102947 100644 --- a/p2p/base/ice_transport_internal.h +++ b/p2p/base/ice_transport_internal.h @@ -332,8 +332,12 @@ class RTC_EXPORT IceTransportInternal : public rtc::PacketTransportInternal { // SignalNetworkRouteChanged. sigslot::signal2 SignalRouteChange; - sigslot::signal1 - SignalCandidatePairChanged; + void SetCandidatePairChangeCallback( + absl::AnyInvocable + 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 @@ class RTC_EXPORT IceTransportInternal : public rtc::PacketTransportInternal { absl::AnyInvocable candidates_removed_callback_; + + absl::AnyInvocable + candidate_pair_change_callback_; }; } // namespace cricket diff --git a/p2p/base/p2p_transport_channel.cc b/p2p/base/p2p_transport_channel.cc index a46f38e6b7..166dbe8852 100644 --- a/p2p/base/p2p_transport_channel.cc +++ b/p2p/base/p2p_transport_channel.cc @@ -1871,8 +1871,9 @@ void P2PTransportChannel::SwitchSelectedConnectionInternal( } 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 100804f9dd..4954f93607 100644 --- a/p2p/base/p2p_transport_channel_unittest.cc +++ b/p2p/base/p2p_transport_channel_unittest.cc @@ -3483,8 +3483,10 @@ class P2PTransportChannelPingTest : public ::testing::Test, &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 a6396a508e..fc88d610ca 100644 --- a/pc/jsep_transport_controller.cc +++ b/pc/jsep_transport_controller.cc @@ -455,8 +455,11 @@ JsepTransportController::CreateDtlsTransport( 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); });