Move implementation of PacketTransportInternal::RegisterReceivedPacketCallback Moved to cc file to fix link issue when linking with dynamic library (crd). Bug: webrtc:15368 Change-Id: I51cefcd439fda93d1135fcffa75198ab680e8583 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/340302 Reviewed-by: Jonas Oreland <jonaso@google.com> Commit-Queue: Per Kjellander <perkj@webrtc.org> Cr-Commit-Position: refs/heads/main@{#41801}
diff --git a/p2p/BUILD.gn b/p2p/BUILD.gn index 657e73d..c3858cb 100644 --- a/p2p/BUILD.gn +++ b/p2p/BUILD.gn
@@ -637,7 +637,10 @@ "../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 2e8c00a..cbe8c55 100644 --- a/p2p/base/packet_transport_internal.cc +++ b/p2p/base/packet_transport_internal.cc
@@ -27,6 +27,19 @@ return absl::optional<NetworkRoute>(); } +void PacketTransportInternal::RegisterReceivedPacketCallback( + void* id, + absl::AnyInvocable<void(PacketTransportInternal*, + const rtc::ReceivedPacket&)> 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 981554a..b758172 100644 --- a/p2p/base/packet_transport_internal.h +++ b/p2p/base/packet_transport_internal.h
@@ -15,6 +15,7 @@ #include <utility> #include <vector> +#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 @@ // Emitted when receiving state changes to true. sigslot::signal1<PacketTransportInternal*> SignalReceivingState; - template <typename F> - void RegisterReceivedPacketCallback(void* id, F&& callback) { - RTC_DCHECK_RUN_ON(&network_checker_); - received_packet_callback_list_.AddReceiver(id, std::forward<F>(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<void(PacketTransportInternal*, + const rtc::ReceivedPacket&)> 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