[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:
committed by
WebRTC LUCI CQ
parent
d5642de353
commit
645f899789
@ -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 "
|
||||
|
||||
@ -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.
|
||||
|
||||
Reference in New Issue
Block a user