[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}
diff --git a/p2p/base/stun_port.cc b/p2p/base/stun_port.cc
index 7b1a2a83..e149c20 100644
--- a/p2p/base/stun_port.cc
+++ b/p2p/base/stun_port.cc
@@ -115,8 +115,10 @@
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 @@
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::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 "
diff --git a/p2p/base/stun_port.h b/p2p/base/stun_port.h
index aa57d66..45150ae 100644
--- a/p2p/base/stun_port.h
+++ b/p2p/base/stun_port.h
@@ -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 @@
// 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 @@
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 @@
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.