From c202f9635ebbdec11a0db5655bdfc245cc1b1698 Mon Sep 17 00:00:00 2001 From: Per K Date: Thu, 14 Dec 2023 13:09:02 +0100 Subject: [PATCH] Remove AsyncPacketSocket::SignalReadPacket Bug: webrtc:11943 Change-Id: I064a5252ed08e7d06695d03364326fa7f4c562a7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/331301 Reviewed-by: Harald Alvestrand Commit-Queue: Per Kjellander Cr-Commit-Position: refs/heads/main@{#41385} --- rtc_base/BUILD.gn | 2 ++ rtc_base/async_packet_socket.cc | 13 ------- rtc_base/async_packet_socket.h | 12 ------- rtc_base/async_packet_socket_unittest.cc | 43 ------------------------ rtc_base/thread_unittest.cc | 17 +++++----- rtc_base/virtual_socket_unittest.cc | 22 ++++++------ 6 files changed, 23 insertions(+), 86 deletions(-) diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn index 3011d6a797..e5eaa278ea 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -1982,6 +1982,7 @@ if (rtc_include_tests) { "containers:flat_map", "containers:unittests", "memory:unittests", + "network:received_packet", "synchronization:mutex", "task_utils:repeating_task", "third_party/base64", @@ -2143,6 +2144,7 @@ if (rtc_include_tests) { "../test:test_main", "../test:test_support", "memory:fifo_buffer", + "network:received_packet", "synchronization:mutex", "third_party/sigslot", ] diff --git a/rtc_base/async_packet_socket.cc b/rtc_base/async_packet_socket.cc index 3721366099..e00bd03e3b 100644 --- a/rtc_base/async_packet_socket.cc +++ b/rtc_base/async_packet_socket.cc @@ -45,13 +45,11 @@ void AsyncPacketSocket::RegisterReceivedPacketCallback( received_packet_callback) { RTC_DCHECK_RUN_ON(&network_checker_); RTC_CHECK(!received_packet_callback_); - SignalReadPacket.connect(this, &AsyncPacketSocket::NotifyPacketReceived); received_packet_callback_ = std::move(received_packet_callback); } void AsyncPacketSocket::DeregisterReceivedPacketCallback() { RTC_DCHECK_RUN_ON(&network_checker_); - SignalReadPacket.disconnect(this); received_packet_callback_ = nullptr; } @@ -62,17 +60,6 @@ void AsyncPacketSocket::NotifyPacketReceived( received_packet_callback_(this, packet); return; } - if (SignalReadPacket.is_empty()) { - RTC_DCHECK_NOTREACHED() << " No listener registered"; - return; - } - // TODO(bugs.webrtc.org:15368): Remove. This code path is only used if - // SignalReadyPacket is used by clients to get notification of received - // packets but actual socket implementation use NotifyPacketReceived to - // trigger the notification. - SignalReadPacket(this, reinterpret_cast(packet.payload().data()), - packet.payload().size(), packet.source_address(), - packet.arrival_time() ? packet.arrival_time()->us() : -1); } void CopySocketInformationToPacketInfo(size_t packet_size_bytes, diff --git a/rtc_base/async_packet_socket.h b/rtc_base/async_packet_socket.h index 768fcd446b..740c0bb61f 100644 --- a/rtc_base/async_packet_socket.h +++ b/rtc_base/async_packet_socket.h @@ -122,18 +122,6 @@ class RTC_EXPORT AsyncPacketSocket : public sigslot::has_slots<> { received_packet_callback); void DeregisterReceivedPacketCallback(); - // Emitted each time a packet is read. Used only for UDP and - // connected TCP sockets. - // TODO(bugs.webrtc.org:15368): Deprecate and remove. - sigslot::signal5 - SignalReadPacket; - // Emitted each time a packet is sent. sigslot::signal2 SignalSentPacket; diff --git a/rtc_base/async_packet_socket_unittest.cc b/rtc_base/async_packet_socket_unittest.cc index 6cd4f09459..1d66821958 100644 --- a/rtc_base/async_packet_socket_unittest.cc +++ b/rtc_base/async_packet_socket_unittest.cc @@ -63,48 +63,5 @@ TEST(AsyncPacketSocket, RegisteredCallbackReceivePacketsFromNotify) { mock_socket.NotifyPacketReceived(); } -TEST(AsyncPacketSocket, RegisteredCallbackReceivePacketsFromSignalReadPacket) { - MockAsyncPacketSocket mock_socket; - MockFunction - received_packet; - - EXPECT_CALL(received_packet, Call); - mock_socket.RegisterReceivedPacketCallback(received_packet.AsStdFunction()); - char data[1] = {'a'}; - mock_socket.SignalReadPacket(&mock_socket, data, 1, SocketAddress(), -1); -} - -TEST(AsyncPacketSocket, SignalReadPacketTriggeredByNotifyPacketReceived) { - class SigslotPacketReceiver : public sigslot::has_slots<> { - public: - explicit SigslotPacketReceiver(rtc::AsyncPacketSocket& socket) { - socket.SignalReadPacket.connect(this, - &SigslotPacketReceiver::OnPacketReceived); - } - - bool packet_received() const { return packet_received_; } - - private: - void OnPacketReceived(AsyncPacketSocket*, - const char*, - size_t, - const SocketAddress&, - // TODO(bugs.webrtc.org/9584): Change to passing the - // int64_t timestamp by value. - const int64_t&) { - packet_received_ = true; - } - - bool packet_received_ = false; - }; - - MockAsyncPacketSocket mock_socket; - SigslotPacketReceiver receiver(mock_socket); - ASSERT_FALSE(receiver.packet_received()); - - mock_socket.NotifyPacketReceived(); - EXPECT_TRUE(receiver.packet_received()); -} - } // namespace } // namespace rtc diff --git a/rtc_base/thread_unittest.cc b/rtc_base/thread_unittest.cc index cd733db2cd..11ee2abc9f 100644 --- a/rtc_base/thread_unittest.cc +++ b/rtc_base/thread_unittest.cc @@ -22,6 +22,7 @@ #include "rtc_base/fake_clock.h" #include "rtc_base/gunit.h" #include "rtc_base/internal/default_socket_server.h" +#include "rtc_base/network/received_packet.h" #include "rtc_base/null_socket_server.h" #include "rtc_base/physical_socket_server.h" #include "rtc_base/ref_counted_object.h" @@ -84,20 +85,20 @@ class SocketClient : public TestGenerator, public sigslot::has_slots<> { : socket_(AsyncUDPSocket::Create(socket, addr)), post_thread_(post_thread), post_handler_(phandler) { - socket_->SignalReadPacket.connect(this, &SocketClient::OnPacket); + socket_->RegisterReceivedPacketCallback( + [&](rtc::AsyncPacketSocket* socket, const rtc::ReceivedPacket& packet) { + OnPacket(socket, packet); + }); } ~SocketClient() override { delete socket_; } SocketAddress address() const { return socket_->GetLocalAddress(); } - void OnPacket(AsyncPacketSocket* socket, - const char* buf, - size_t size, - const SocketAddress& remote_addr, - const int64_t& packet_time_us) { - EXPECT_EQ(size, sizeof(uint32_t)); - uint32_t prev = reinterpret_cast(buf)[0]; + void OnPacket(AsyncPacketSocket* socket, const rtc::ReceivedPacket& packet) { + EXPECT_EQ(packet.payload().size(), sizeof(uint32_t)); + uint32_t prev = + reinterpret_cast(packet.payload().data())[0]; uint32_t result = Next(prev); post_thread_->PostDelayedTask([post_handler_ = post_handler_, diff --git a/rtc_base/virtual_socket_unittest.cc b/rtc_base/virtual_socket_unittest.cc index 67585b1fcd..8efc9d8223 100644 --- a/rtc_base/virtual_socket_unittest.cc +++ b/rtc_base/virtual_socket_unittest.cc @@ -13,6 +13,8 @@ #include #include #include + +#include "rtc_base/network/received_packet.h" #if defined(WEBRTC_POSIX) #include #endif @@ -101,7 +103,10 @@ struct Receiver : public sigslot::has_slots<> { sum(0), sum_sq(0), samples(0) { - socket->SignalReadPacket.connect(this, &Receiver::OnReadPacket); + socket->RegisterReceivedPacketCallback( + [&](rtc::AsyncPacketSocket* socket, const rtc::ReceivedPacket& packet) { + OnReadPacket(socket, packet); + }); periodic = RepeatingTaskHandle::DelayedStart( thread, TimeDelta::Seconds(1), [this] { // It is always possible for us to receive more than expected because @@ -116,18 +121,15 @@ struct Receiver : public sigslot::has_slots<> { ~Receiver() override { periodic.Stop(); } - void OnReadPacket(AsyncPacketSocket* s, - const char* data, - size_t size, - const SocketAddress& remote_addr, - const int64_t& /* packet_time_us */) { + void OnReadPacket(AsyncPacketSocket* s, const rtc::ReceivedPacket& packet) { ASSERT_EQ(socket.get(), s); - ASSERT_GE(size, 4U); + ASSERT_GE(packet.payload().size(), 4U); - count += size; - sec_count += size; + count += packet.payload().size(); + sec_count += packet.payload().size(); - uint32_t send_time = *reinterpret_cast(data); + uint32_t send_time = + *reinterpret_cast(packet.payload().data()); uint32_t recv_time = rtc::TimeMillis(); uint32_t delay = recv_time - send_time; sum += delay;