[sigslot] - Remove signal from StunPort::AddressResolver.

Bug: webrtc:11943
Change-Id: I5c8fe10cbf47e85cfc26e1e7e548627a588ffcbf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/225551
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34534}
This commit is contained in:
Mirko Bonadei
2021-07-22 19:49:43 +02:00
committed by WebRTC LUCI CQ
parent d5642de353
commit 645f899789
2 changed files with 17 additions and 13 deletions

View File

@ -115,8 +115,10 @@ class StunBindingRequest : public StunRequest {
int64_t start_time_;
};
UDPPort::AddressResolver::AddressResolver(rtc::PacketSocketFactory* factory)
: socket_factory_(factory) {}
UDPPort::AddressResolver::AddressResolver(
rtc::PacketSocketFactory* factory,
std::function<void(const rtc::SocketAddress&, int)> done_callback)
: socket_factory_(factory), done_(std::move(done_callback)) {}
UDPPort::AddressResolver::~AddressResolver() {
for (ResolverMap::iterator it = resolvers_.begin(); it != resolvers_.end();
@ -159,7 +161,7 @@ void UDPPort::AddressResolver::OnResolveResult(
for (ResolverMap::iterator it = resolvers_.begin(); it != resolvers_.end();
++it) {
if (it->second == resolver) {
SignalDone(it->first, resolver->GetError());
done_(it->first, resolver->GetError());
return;
}
}
@ -434,8 +436,10 @@ void UDPPort::SendStunBindingRequests() {
void UDPPort::ResolveStunAddress(const rtc::SocketAddress& stun_addr) {
if (!resolver_) {
resolver_.reset(new AddressResolver(socket_factory()));
resolver_->SignalDone.connect(this, &UDPPort::OnResolveResult);
resolver_.reset(new AddressResolver(
socket_factory(), [&](const rtc::SocketAddress& input, int error) {
OnResolveResult(input, error);
}));
}
RTC_LOG(LS_INFO) << ToString() << ": Starting STUN host lookup for "

View File

@ -11,6 +11,7 @@
#ifndef P2P_BASE_STUN_PORT_H_
#define P2P_BASE_STUN_PORT_H_
#include <functional>
#include <map>
#include <memory>
#include <string>
@ -20,8 +21,6 @@
#include "p2p/base/stun_request.h"
#include "rtc_base/async_packet_socket.h"
// TODO(mallinath) - Rename stunport.cc|h to udpport.cc|h.
namespace cricket {
// Lifetime chosen for STUN ports on low-cost networks.
@ -183,7 +182,9 @@ class UDPPort : public Port {
// resolve one address per instance.
class AddressResolver : public sigslot::has_slots<> {
public:
explicit AddressResolver(rtc::PacketSocketFactory* factory);
explicit AddressResolver(
rtc::PacketSocketFactory* factory,
std::function<void(const rtc::SocketAddress&, int)> done_callback);
~AddressResolver() override;
void Resolve(const rtc::SocketAddress& address);
@ -191,11 +192,6 @@ class UDPPort : public Port {
int family,
rtc::SocketAddress* output) const;
// The signal is sent when resolving the specified address is finished. The
// first argument is the input address, the second argument is the error
// or 0 if it succeeded.
sigslot::signal2<const rtc::SocketAddress&, int> SignalDone;
private:
typedef std::map<rtc::SocketAddress, rtc::AsyncResolverInterface*>
ResolverMap;
@ -204,6 +200,10 @@ class UDPPort : public Port {
rtc::PacketSocketFactory* socket_factory_;
ResolverMap resolvers_;
// The function is called when resolving the specified address is finished.
// The first argument is the input address, the second argument is the error
// or 0 if it succeeded.
std::function<void(const rtc::SocketAddress&, int)> done_;
};
// DNS resolution of the STUN server.