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}
This commit is contained in:
Per K 2024-02-25 17:49:22 +01:00 committed by WebRTC LUCI CQ
parent d0491a3431
commit a021d99d2a
3 changed files with 25 additions and 10 deletions

View file

@ -637,7 +637,10 @@ rtc_library("packet_transport_internal") {
"../rtc_base/system:rtc_export", "../rtc_base/system:rtc_export",
"../rtc_base/third_party/sigslot", "../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") { rtc_library("port") {

View file

@ -27,6 +27,19 @@ absl::optional<NetworkRoute> PacketTransportInternal::network_route() const {
return absl::optional<NetworkRoute>(); 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( void PacketTransportInternal::NotifyPacketReceived(
const rtc::ReceivedPacket& packet) { const rtc::ReceivedPacket& packet) {
RTC_DCHECK_RUN_ON(&network_checker_); RTC_DCHECK_RUN_ON(&network_checker_);

View file

@ -15,6 +15,7 @@
#include <utility> #include <utility>
#include <vector> #include <vector>
#include "absl/functional/any_invocable.h"
#include "absl/types/optional.h" #include "absl/types/optional.h"
#include "p2p/base/port.h" #include "p2p/base/port.h"
#include "rtc_base/async_packet_socket.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. // Emitted when receiving state changes to true.
sigslot::signal1<PacketTransportInternal*> SignalReceivingState; sigslot::signal1<PacketTransportInternal*> SignalReceivingState;
template <typename F> // Callback is invoked each time a packet is received on this channel.
void RegisterReceivedPacketCallback(void* id, F&& callback) { void RegisterReceivedPacketCallback(
RTC_DCHECK_RUN_ON(&network_checker_); void* id,
received_packet_callback_list_.AddReceiver(id, std::forward<F>(callback)); absl::AnyInvocable<void(PacketTransportInternal*,
} const rtc::ReceivedPacket&)> callback);
void DeregisterReceivedPacketCallback(void* id) {
RTC_DCHECK_RUN_ON(&network_checker_); void DeregisterReceivedPacketCallback(void* id);
received_packet_callback_list_.RemoveReceivers(id);
}
// Signalled each time a packet is received on this channel. // Signalled each time a packet is received on this channel.
// TODO(bugs.webrtc.org:15368): Deprecate and remove. Replace with // TODO(bugs.webrtc.org:15368): Deprecate and remove. Replace with