From 66be8959440e04ded8ea62e42a6c2571e86c5507 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Fri, 3 Sep 2021 10:55:12 +0200 Subject: [PATCH] Delete BasicPacketSocketFactory default constructor Update users to pass in the appropriate rtc::SocketFactory, instead of relying on BasicPacketSocketFactory using the rtc::SocketServer associated with the thread the constructor runs on. Bug: webrtc:13145 Change-Id: I74eca1ce2c5885c14372a797f6374825b1bc1873 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231134 Reviewed-by: Harald Alvestrand Commit-Queue: Niels Moller Cr-Commit-Position: refs/heads/main@{#34914} --- examples/stunprober/main.cc | 19 ++++++++++--------- examples/turnserver/turnserver_main.cc | 16 +++++++++------- p2p/base/basic_packet_socket_factory.cc | 3 --- p2p/base/basic_packet_socket_factory.h | 1 - p2p/base/turn_server_unittest.cc | 4 +--- p2p/client/basic_port_allocator_unittest.cc | 3 ++- p2p/stunprober/stun_prober_unittest.cc | 4 ++-- 7 files changed, 24 insertions(+), 26 deletions(-) diff --git a/examples/stunprober/main.cc b/examples/stunprober/main.cc index abd35e362b..fa5825c82e 100644 --- a/examples/stunprober/main.cc +++ b/examples/stunprober/main.cc @@ -21,6 +21,7 @@ #include "rtc_base/helpers.h" #include "rtc_base/logging.h" #include "rtc_base/network.h" +#include "rtc_base/physical_socket_server.h" #include "rtc_base/socket_address.h" #include "rtc_base/ssl_adapter.h" #include "rtc_base/thread.h" @@ -122,23 +123,23 @@ int main(int argc, char* argv[]) { rtc::InitializeSSL(); rtc::InitRandom(rtc::Time32()); - rtc::Thread* thread = rtc::ThreadManager::Instance()->WrapCurrentThread(); - std::unique_ptr socket_factory( - new rtc::BasicPacketSocketFactory()); + rtc::PhysicalSocketServer socket_server; + rtc::AutoSocketServerThread thread(&socket_server); + auto socket_factory = + std::make_unique(&socket_server); std::unique_ptr network_manager( new rtc::BasicNetworkManager()); rtc::NetworkManager::NetworkList networks; network_manager->GetNetworks(&networks); - StunProber* prober = - new StunProber(socket_factory.get(), rtc::Thread::Current(), networks); - auto finish_callback = [thread](StunProber* prober, int result) { - StopTrial(thread, prober, result); + auto prober = std::make_unique(socket_factory.get(), + rtc::Thread::Current(), networks); + auto finish_callback = [&thread](StunProber* prober, int result) { + StopTrial(&thread, prober, result); }; prober->Start(server_addresses, absl::GetFlag(FLAGS_shared_socket), absl::GetFlag(FLAGS_interval), absl::GetFlag(FLAGS_pings_per_ip), absl::GetFlag(FLAGS_timeout), AsyncCallback(finish_callback)); - thread->Run(); - delete prober; + thread.Run(); return 0; } diff --git a/examples/turnserver/turnserver_main.cc b/examples/turnserver/turnserver_main.cc index 5e2a747f20..055d9baaee 100644 --- a/examples/turnserver/turnserver_main.cc +++ b/examples/turnserver/turnserver_main.cc @@ -20,8 +20,8 @@ #include "p2p/base/turn_server.h" #include "rtc_base/async_udp_socket.h" #include "rtc_base/ip_address.h" +#include "rtc_base/physical_socket_server.h" #include "rtc_base/socket_address.h" -#include "rtc_base/socket_server.h" #include "rtc_base/thread.h" namespace { @@ -69,16 +69,17 @@ int main(int argc, char* argv[]) { return 1; } - rtc::Thread* main = rtc::Thread::Current(); + rtc::PhysicalSocketServer socket_server; + rtc::AutoSocketServerThread main(&socket_server); rtc::AsyncUDPSocket* int_socket = - rtc::AsyncUDPSocket::Create(main->socketserver(), int_addr); + rtc::AsyncUDPSocket::Create(&socket_server, int_addr); if (!int_socket) { std::cerr << "Failed to create a UDP socket bound at" << int_addr.ToString() << std::endl; return 1; } - cricket::TurnServer server(main); + cricket::TurnServer server(&main); std::fstream auth_file(argv[4], std::fstream::in); TurnFileAuth auth(auth_file.is_open() @@ -88,11 +89,12 @@ int main(int argc, char* argv[]) { server.set_software(kSoftware); server.set_auth_hook(&auth); server.AddInternalSocket(int_socket, cricket::PROTO_UDP); - server.SetExternalSocketFactory(new rtc::BasicPacketSocketFactory(), - rtc::SocketAddress(ext_addr, 0)); + server.SetExternalSocketFactory( + new rtc::BasicPacketSocketFactory(&socket_server), + rtc::SocketAddress(ext_addr, 0)); std::cout << "Listening internally at " << int_addr.ToString() << std::endl; - main->Run(); + main.Run(); return 0; } diff --git a/p2p/base/basic_packet_socket_factory.cc b/p2p/base/basic_packet_socket_factory.cc index 4aaad7ce07..4cba270130 100644 --- a/p2p/base/basic_packet_socket_factory.cc +++ b/p2p/base/basic_packet_socket_factory.cc @@ -29,9 +29,6 @@ namespace rtc { -BasicPacketSocketFactory::BasicPacketSocketFactory() - : thread_(Thread::Current()), socket_factory_(NULL) {} - BasicPacketSocketFactory::BasicPacketSocketFactory(Thread* thread) : thread_(thread), socket_factory_(NULL) {} diff --git a/p2p/base/basic_packet_socket_factory.h b/p2p/base/basic_packet_socket_factory.h index 22f30249b9..368c976a9c 100644 --- a/p2p/base/basic_packet_socket_factory.h +++ b/p2p/base/basic_packet_socket_factory.h @@ -23,7 +23,6 @@ class Thread; class BasicPacketSocketFactory : public PacketSocketFactory { public: - BasicPacketSocketFactory(); explicit BasicPacketSocketFactory(Thread* thread); explicit BasicPacketSocketFactory(SocketFactory* socket_factory); ~BasicPacketSocketFactory() override; diff --git a/p2p/base/turn_server_unittest.cc b/p2p/base/turn_server_unittest.cc index d9bc41bdcc..e534f6598c 100644 --- a/p2p/base/turn_server_unittest.cc +++ b/p2p/base/turn_server_unittest.cc @@ -21,7 +21,7 @@ namespace cricket { class TurnServerConnectionTest : public ::testing::Test { public: - TurnServerConnectionTest() : thread_(&vss_) {} + TurnServerConnectionTest() : thread_(&vss_), socket_factory_(&vss_) {} void ExpectEqual(const TurnServerConnection& a, const TurnServerConnection& b) { @@ -41,8 +41,6 @@ class TurnServerConnectionTest : public ::testing::Test { protected: rtc::VirtualSocketServer vss_; rtc::AutoSocketServerThread thread_; - // Since this is constructed after `thread_`, it will pick up `threads_`'s - // socket server. rtc::BasicPacketSocketFactory socket_factory_; }; diff --git a/p2p/client/basic_port_allocator_unittest.cc b/p2p/client/basic_port_allocator_unittest.cc index 4925c264d7..52ba168cbc 100644 --- a/p2p/client/basic_port_allocator_unittest.cc +++ b/p2p/client/basic_port_allocator_unittest.cc @@ -470,7 +470,8 @@ class BasicPortAllocatorTestBase : public ::testing::Test, rtc::NAT_OPEN_CONE, vss_.get(), kNatUdpAddr, kNatTcpAddr, vss_.get(), rtc::SocketAddress(kNatUdpAddr.ipaddr(), 0))); } else { - nat_socket_factory_.reset(new rtc::BasicPacketSocketFactory()); + nat_socket_factory_ = + std::make_unique(fss_.get()); } ServerAddresses stun_servers; diff --git a/p2p/stunprober/stun_prober_unittest.cc b/p2p/stunprober/stun_prober_unittest.cc index e098ec6f48..6ba2c423d2 100644 --- a/p2p/stunprober/stun_prober_unittest.cc +++ b/p2p/stunprober/stun_prober_unittest.cc @@ -80,8 +80,8 @@ class StunProberTest : public ::testing::Test { rtc::NetworkManager::NetworkList networks; networks.push_back(&ipv4_network1); - std::unique_ptr socket_factory( - new rtc::BasicPacketSocketFactory()); + auto socket_factory = + std::make_unique(ss_.get()); // Set up the expected results for verification. std::set srflx_addresses;