From abc5066bd9a67ea7973a6b06c1c12869410eb333 Mon Sep 17 00:00:00 2001 From: Harald Alvestrand Date: Mon, 27 Nov 2023 13:43:07 +0000 Subject: [PATCH] Replace IcetransportInternal::SignalCandidatesRemoved sigslot with an one-user callback. Bug: webrtc:11943 Change-Id: Ia61c7811f0058fa7238d47ef13fadfd547f052ce Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/328900 Commit-Queue: Harald Alvestrand Reviewed-by: Per Kjellander Cr-Commit-Position: refs/heads/main@{#41250} --- p2p/base/ice_transport_internal.h | 11 +++++++++-- p2p/base/p2p_transport_channel.cc | 4 +++- p2p/base/p2p_transport_channel_unittest.cc | 6 ++++-- pc/jsep_transport_controller.cc | 8 ++++++-- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/p2p/base/ice_transport_internal.h b/p2p/base/ice_transport_internal.h index d80dc99d1e..73e1089bed 100644 --- a/p2p/base/ice_transport_internal.h +++ b/p2p/base/ice_transport_internal.h @@ -317,8 +317,12 @@ class RTC_EXPORT IceTransportInternal : public rtc::PacketTransportInternal { candidate_error_callback_ = std::move(callback); } - sigslot::signal2 - SignalCandidatesRemoved; + void SetCandidatesRemovedCallback( + absl::AnyInvocable + callback) { + RTC_DCHECK(!candidates_removed_callback_); + candidates_removed_callback_ = std::move(callback); + } // Deprecated by PacketTransportInternal::SignalNetworkRouteChanged. // This signal occurs when there is a change in the way that packets are @@ -379,6 +383,9 @@ class RTC_EXPORT IceTransportInternal : public rtc::PacketTransportInternal { absl::AnyInvocable candidate_error_callback_; + + absl::AnyInvocable + candidates_removed_callback_; }; } // namespace cricket diff --git a/p2p/base/p2p_transport_channel.cc b/p2p/base/p2p_transport_channel.cc index cb097c3d59..a46f38e6b7 100644 --- a/p2p/base/p2p_transport_channel.cc +++ b/p2p/base/p2p_transport_channel.cc @@ -2202,7 +2202,9 @@ void P2PTransportChannel::OnCandidatesRemoved( candidate.set_transport_name(transport_name()); candidates_to_remove.push_back(candidate); } - SignalCandidatesRemoved(this, candidates_to_remove); + if (candidates_removed_callback_) { + candidates_removed_callback_(this, candidates_to_remove); + } } void P2PTransportChannel::PruneAllPorts() { diff --git a/p2p/base/p2p_transport_channel_unittest.cc b/p2p/base/p2p_transport_channel_unittest.cc index 61c0064aab..100804f9dd 100644 --- a/p2p/base/p2p_transport_channel_unittest.cc +++ b/p2p/base/p2p_transport_channel_unittest.cc @@ -488,8 +488,10 @@ class P2PTransportChannelTestBase : public ::testing::Test, this, &P2PTransportChannelTestBase::OnReadyToSend); channel->SignalCandidateGathered.connect( this, &P2PTransportChannelTestBase::OnCandidateGathered); - channel->SignalCandidatesRemoved.connect( - this, &P2PTransportChannelTestBase::OnCandidatesRemoved); + channel->SetCandidatesRemovedCallback( + [this](IceTransportInternal* transport, const Candidates& candidates) { + OnCandidatesRemoved(transport, candidates); + }); channel->SignalReadPacket.connect( this, &P2PTransportChannelTestBase::OnReadPacket); channel->SignalRoleConflict.connect( diff --git a/pc/jsep_transport_controller.cc b/pc/jsep_transport_controller.cc index a710cff45c..a6396a508e 100644 --- a/pc/jsep_transport_controller.cc +++ b/pc/jsep_transport_controller.cc @@ -443,8 +443,12 @@ JsepTransportController::CreateDtlsTransport( RTC_DCHECK_RUN_ON(network_thread_); OnTransportCandidateError_n(transport, error); }); - dtls->ice_transport()->SignalCandidatesRemoved.connect( - this, &JsepTransportController::OnTransportCandidatesRemoved_n); + dtls->ice_transport()->SetCandidatesRemovedCallback( + [this](cricket::IceTransportInternal* transport, + const cricket::Candidates& candidates) { + RTC_DCHECK_RUN_ON(network_thread_); + OnTransportCandidatesRemoved_n(transport, candidates); + }); dtls->ice_transport()->SignalRoleConflict.connect( this, &JsepTransportController::OnTransportRoleConflict_n); dtls->ice_transport()->SignalStateChanged.connect(