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 <hta@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36387}
This commit is contained in:
Niels Möller
2022-03-30 16:28:25 +02:00
committed by WebRTC LUCI CQ
parent 38f35db4d4
commit 1e39da3092
3 changed files with 33 additions and 8 deletions

View File

@ -38,6 +38,16 @@ void IncrementCounterByAddress(std::map<T, int>* counter_per_ip, const T& ip) {
counter_per_ip->insert(std::make_pair(ip, 0)).first->second++; counter_per_ip->insert(std::make_pair(ip, 0)).first->second++;
} }
std::vector<const rtc::Network*> NetworkListToConst(
const rtc::NetworkManager::NetworkList networks) {
std::vector<const rtc::Network*> result;
result.reserve(networks.size());
for (const rtc::Network* network : networks) {
result.push_back(network);
}
return result;
}
} // namespace } // namespace
// A requester tracks the requests and responses from a single socket to many // 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, StunProber::StunProber(rtc::PacketSocketFactory* socket_factory,
rtc::Thread* thread, rtc::Thread* thread,
const rtc::NetworkManager::NetworkList& networks) 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<const rtc::Network*> networks)
: interval_ms_(0), : interval_ms_(0),
socket_factory_(socket_factory), socket_factory_(socket_factory),
thread_(thread), thread_(thread),

View File

@ -95,9 +95,15 @@ class RTC_EXPORT StunProber : public sigslot::has_slots<> {
std::set<std::string> srflx_addrs; std::set<std::string> 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, StunProber(rtc::PacketSocketFactory* socket_factory,
rtc::Thread* thread, rtc::Thread* thread,
const rtc::NetworkManager::NetworkList& networks); const rtc::NetworkManager::NetworkList& networks);
StunProber(rtc::PacketSocketFactory* socket_factory,
rtc::Thread* thread,
std::vector<const rtc::Network*> networks);
~StunProber() override; ~StunProber() override;
StunProber(const StunProber&) = delete; StunProber(const StunProber&) = delete;
@ -240,7 +246,7 @@ class RTC_EXPORT StunProber : public sigslot::has_slots<> {
// AsyncCallback. // AsyncCallback.
ObserverAdapter observer_adapter_; ObserverAdapter observer_adapter_;
rtc::NetworkManager::NetworkList networks_; const std::vector<const rtc::Network*> networks_;
webrtc::ScopedTaskSafety task_safety_; webrtc::ScopedTaskSafety task_safety_;
}; };

View File

@ -13,6 +13,7 @@
#include <stdint.h> #include <stdint.h>
#include <memory> #include <memory>
#include <utility>
#include "p2p/base/basic_packet_socket_factory.h" #include "p2p/base/basic_packet_socket_factory.h"
#include "p2p/base/test_stun_server.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 { class StunProberTest : public ::testing::Test {
public: public:
StunProberTest() StunProberTest()
: ss_(new rtc::VirtualSocketServer()), : ss_(std::make_unique<rtc::VirtualSocketServer>()),
main_(ss_.get()), main_(ss_.get()),
result_(StunProber::SUCCESS), result_(StunProber::SUCCESS),
stun_server_1_(cricket::TestStunServer::Create(ss_.get(), kStunAddr1)), stun_server_1_(cricket::TestStunServer::Create(ss_.get(), kStunAddr1)),
@ -54,12 +55,12 @@ class StunProberTest : public ::testing::Test {
void StartProbing(rtc::PacketSocketFactory* socket_factory, void StartProbing(rtc::PacketSocketFactory* socket_factory,
const std::vector<rtc::SocketAddress>& addrs, const std::vector<rtc::SocketAddress>& addrs,
const rtc::NetworkManager::NetworkList& networks, std::vector<const rtc::Network*> networks,
bool shared_socket, bool shared_socket,
uint16_t interval, uint16_t interval,
uint16_t pings_per_ip) { uint16_t pings_per_ip) {
prober.reset( prober = std::make_unique<StunProber>(
new StunProber(socket_factory, rtc::Thread::Current(), networks)); socket_factory, rtc::Thread::Current(), std::move(networks));
prober->Start(addrs, shared_socket, interval, pings_per_ip, prober->Start(addrs, shared_socket, interval, pings_per_ip,
100 /* timeout_ms */, [this](StunProber* prober, int result) { 100 /* timeout_ms */, [this](StunProber* prober, int result) {
this->StopCallback(prober, 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::Network ipv4_network1("test_eth0", "Test Network Adapter 1",
rtc::IPAddress(0x12345600U), 24); rtc::IPAddress(0x12345600U), 24);
ipv4_network1.AddIP(rtc::IPAddress(0x12345678)); ipv4_network1.AddIP(rtc::IPAddress(0x12345678));
rtc::NetworkManager::NetworkList networks; std::vector<const rtc::Network*> networks;
networks.push_back(&ipv4_network1); networks.push_back(&ipv4_network1);
auto socket_factory = auto socket_factory =
@ -93,8 +94,8 @@ class StunProberTest : public ::testing::Test {
// kFailedStunAddr. // kFailedStunAddr.
const uint32_t total_pings_reported = total_pings_tried - pings_per_ip; const uint32_t total_pings_reported = total_pings_tried - pings_per_ip;
StartProbing(socket_factory.get(), addrs, networks, shared_mode, 3, StartProbing(socket_factory.get(), addrs, std::move(networks), shared_mode,
pings_per_ip); 3, pings_per_ip);
WAIT(stopped_, 1000); WAIT(stopped_, 1000);