diff --git a/p2p/BUILD.gn b/p2p/BUILD.gn index 657e73d344..c3858cba0d 100644 --- a/p2p/BUILD.gn +++ b/p2p/BUILD.gn @@ -637,7 +637,10 @@ rtc_library("packet_transport_internal") { "../rtc_base/system:rtc_export", "../rtc_base/third_party/sigslot", ] - absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] + absl_deps = [ + "//third_party/abseil-cpp/absl/functional:any_invocable", + "//third_party/abseil-cpp/absl/types:optional", + ] } rtc_library("port") { diff --git a/p2p/base/packet_transport_internal.cc b/p2p/base/packet_transport_internal.cc index 2e8c00a648..cbe8c55eb3 100644 --- a/p2p/base/packet_transport_internal.cc +++ b/p2p/base/packet_transport_internal.cc @@ -27,6 +27,19 @@ absl::optional PacketTransportInternal::network_route() const { return absl::optional(); } +void PacketTransportInternal::RegisterReceivedPacketCallback( + void* id, + absl::AnyInvocable callback) { + RTC_DCHECK_RUN_ON(&network_checker_); + received_packet_callback_list_.AddReceiver(id, std::move(callback)); +} + +void PacketTransportInternal::DeregisterReceivedPacketCallback(void* id) { + RTC_DCHECK_RUN_ON(&network_checker_); + received_packet_callback_list_.RemoveReceivers(id); +} + void PacketTransportInternal::NotifyPacketReceived( const rtc::ReceivedPacket& packet) { RTC_DCHECK_RUN_ON(&network_checker_); diff --git a/p2p/base/packet_transport_internal.h b/p2p/base/packet_transport_internal.h index 981554a2bf..b7581729f4 100644 --- a/p2p/base/packet_transport_internal.h +++ b/p2p/base/packet_transport_internal.h @@ -15,6 +15,7 @@ #include #include +#include "absl/functional/any_invocable.h" #include "absl/types/optional.h" #include "p2p/base/port.h" #include "rtc_base/async_packet_socket.h" @@ -81,15 +82,13 @@ class RTC_EXPORT PacketTransportInternal : public sigslot::has_slots<> { // Emitted when receiving state changes to true. sigslot::signal1 SignalReceivingState; - template - void RegisterReceivedPacketCallback(void* id, F&& callback) { - RTC_DCHECK_RUN_ON(&network_checker_); - received_packet_callback_list_.AddReceiver(id, std::forward(callback)); - } - void DeregisterReceivedPacketCallback(void* id) { - RTC_DCHECK_RUN_ON(&network_checker_); - received_packet_callback_list_.RemoveReceivers(id); - } + // Callback is invoked each time a packet is received on this channel. + void RegisterReceivedPacketCallback( + void* id, + absl::AnyInvocable callback); + + void DeregisterReceivedPacketCallback(void* id); // Signalled each time a packet is received on this channel. // TODO(bugs.webrtc.org:15368): Deprecate and remove. Replace with