From 1e39da3092cb1c67e9b637161570c55a2f15ad45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Wed, 30 Mar 2022 16:28:25 +0200 Subject: [PATCH] Refactor StunProber to use const rtc::Network* Bug: webrtc:13869 Change-Id: I99645f6b845d2f12c90b3b39aa7bd3f2849a717c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257165 Reviewed-by: Harald Alvestrand Commit-Queue: Niels Moller Cr-Commit-Position: refs/heads/main@{#36387} --- p2p/stunprober/stun_prober.cc | 18 ++++++++++++++++++ p2p/stunprober/stun_prober.h | 8 +++++++- p2p/stunprober/stun_prober_unittest.cc | 15 ++++++++------- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/p2p/stunprober/stun_prober.cc b/p2p/stunprober/stun_prober.cc index efe0fbdea8..7f3f60bc3d 100644 --- a/p2p/stunprober/stun_prober.cc +++ b/p2p/stunprober/stun_prober.cc @@ -38,6 +38,16 @@ void IncrementCounterByAddress(std::map* counter_per_ip, const T& ip) { counter_per_ip->insert(std::make_pair(ip, 0)).first->second++; } +std::vector NetworkListToConst( + const rtc::NetworkManager::NetworkList networks) { + std::vector result; + result.reserve(networks.size()); + for (const rtc::Network* network : networks) { + result.push_back(network); + } + return result; +} + } // namespace // A requester tracks the requests and responses from a single socket to many @@ -256,6 +266,14 @@ void StunProber::ObserverAdapter::OnFinished(StunProber* stunprober, StunProber::StunProber(rtc::PacketSocketFactory* socket_factory, rtc::Thread* thread, const rtc::NetworkManager::NetworkList& networks) + : interval_ms_(0), + socket_factory_(socket_factory), + thread_(thread), + networks_(NetworkListToConst(networks)) {} + +StunProber::StunProber(rtc::PacketSocketFactory* socket_factory, + rtc::Thread* thread, + std::vector networks) : interval_ms_(0), socket_factory_(socket_factory), thread_(thread), diff --git a/p2p/stunprober/stun_prober.h b/p2p/stunprober/stun_prober.h index b1acd7704d..06b1198009 100644 --- a/p2p/stunprober/stun_prober.h +++ b/p2p/stunprober/stun_prober.h @@ -95,9 +95,15 @@ class RTC_EXPORT StunProber : public sigslot::has_slots<> { std::set srflx_addrs; }; + // TODO(bugs.webrtc.org/13869): Delete, use constructor with const + // rtc::Network*. + ABSL_DEPRECATED("bugs.webrtc.org/13869") StunProber(rtc::PacketSocketFactory* socket_factory, rtc::Thread* thread, const rtc::NetworkManager::NetworkList& networks); + StunProber(rtc::PacketSocketFactory* socket_factory, + rtc::Thread* thread, + std::vector networks); ~StunProber() override; StunProber(const StunProber&) = delete; @@ -240,7 +246,7 @@ class RTC_EXPORT StunProber : public sigslot::has_slots<> { // AsyncCallback. ObserverAdapter observer_adapter_; - rtc::NetworkManager::NetworkList networks_; + const std::vector networks_; webrtc::ScopedTaskSafety task_safety_; }; diff --git a/p2p/stunprober/stun_prober_unittest.cc b/p2p/stunprober/stun_prober_unittest.cc index 6ba2c423d2..5fb491daa3 100644 --- a/p2p/stunprober/stun_prober_unittest.cc +++ b/p2p/stunprober/stun_prober_unittest.cc @@ -13,6 +13,7 @@ #include #include +#include #include "p2p/base/basic_packet_socket_factory.h" #include "p2p/base/test_stun_server.h" @@ -40,7 +41,7 @@ const rtc::SocketAddress kStunMappedAddr("77.77.77.77", 0); class StunProberTest : public ::testing::Test { public: StunProberTest() - : ss_(new rtc::VirtualSocketServer()), + : ss_(std::make_unique()), main_(ss_.get()), result_(StunProber::SUCCESS), stun_server_1_(cricket::TestStunServer::Create(ss_.get(), kStunAddr1)), @@ -54,12 +55,12 @@ class StunProberTest : public ::testing::Test { void StartProbing(rtc::PacketSocketFactory* socket_factory, const std::vector& addrs, - const rtc::NetworkManager::NetworkList& networks, + std::vector networks, bool shared_socket, uint16_t interval, uint16_t pings_per_ip) { - prober.reset( - new StunProber(socket_factory, rtc::Thread::Current(), networks)); + prober = std::make_unique( + socket_factory, rtc::Thread::Current(), std::move(networks)); prober->Start(addrs, shared_socket, interval, pings_per_ip, 100 /* timeout_ms */, [this](StunProber* prober, int result) { this->StopCallback(prober, result); @@ -77,7 +78,7 @@ class StunProberTest : public ::testing::Test { rtc::Network ipv4_network1("test_eth0", "Test Network Adapter 1", rtc::IPAddress(0x12345600U), 24); ipv4_network1.AddIP(rtc::IPAddress(0x12345678)); - rtc::NetworkManager::NetworkList networks; + std::vector networks; networks.push_back(&ipv4_network1); auto socket_factory = @@ -93,8 +94,8 @@ class StunProberTest : public ::testing::Test { // kFailedStunAddr. const uint32_t total_pings_reported = total_pings_tried - pings_per_ip; - StartProbing(socket_factory.get(), addrs, networks, shared_mode, 3, - pings_per_ip); + StartProbing(socket_factory.get(), addrs, std::move(networks), shared_mode, + 3, pings_per_ip); WAIT(stopped_, 1000);