use sigslot trampoline in server_socket_adapters
Bug: webrtc:42222066
Change-Id: I6fd49f33e2a271f9de66dd9b419564f1b284a0af
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/411460
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Lena Kaplan <lenakaplan@meta.com>
Cr-Commit-Position: refs/heads/main@{#45820}
diff --git a/p2p/test/nat_server.cc b/p2p/test/nat_server.cc
index c330c7a..ab2b96d 100644
--- a/p2p/test/nat_server.cc
+++ b/p2p/test/nat_server.cc
@@ -125,7 +125,7 @@
bool remainder = (*len > 0);
BufferInput(false);
- SignalConnectRequest(this, dest_addr);
+ NotifyConnectRequest(this, dest_addr);
if (remainder) {
SignalReadEvent(this);
}
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 8a66298..cb00a44 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -1284,6 +1284,7 @@
":stringutils",
":zero_memory",
"../api:array_view",
+ "//third_party/abseil-cpp/absl/functional:any_invocable",
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/strings:string_view",
]
diff --git a/rtc_base/proxy_server.cc b/rtc_base/proxy_server.cc
index 31fdc50..6abb15b 100644
--- a/rtc_base/proxy_server.cc
+++ b/rtc_base/proxy_server.cc
@@ -73,8 +73,10 @@
out_buffer_(kBufferSize),
in_buffer_(kBufferSize),
destroyed_trampoline_(this) {
- int_socket_->SignalConnectRequest.connect(this,
- &ProxyBinding::OnConnectRequest);
+ int_socket_->SubscribeConnectRequest(
+ [this](AsyncProxyServerSocket* socket, const SocketAddress& addr) {
+ OnConnectRequest(socket, addr);
+ });
int_socket_->SignalReadEvent.connect(this, &ProxyBinding::OnInternalRead);
int_socket_->SignalWriteEvent.connect(this, &ProxyBinding::OnInternalWrite);
int_socket_->SignalCloseEvent.connect(this, &ProxyBinding::OnInternalClose);
diff --git a/rtc_base/server_socket_adapters.cc b/rtc_base/server_socket_adapters.cc
index c3416e6..bf41ce9 100644
--- a/rtc_base/server_socket_adapters.cc
+++ b/rtc_base/server_socket_adapters.cc
@@ -23,7 +23,8 @@
AsyncProxyServerSocket::AsyncProxyServerSocket(Socket* socket,
size_t buffer_size)
- : BufferedReadAdapter(socket, buffer_size) {}
+ : BufferedReadAdapter(socket, buffer_size),
+ connect_request_trampoline_(this) {}
AsyncProxyServerSocket::~AsyncProxyServerSocket() = default;
diff --git a/rtc_base/server_socket_adapters.h b/rtc_base/server_socket_adapters.h
index 8f53cf4..d65bf81 100644
--- a/rtc_base/server_socket_adapters.h
+++ b/rtc_base/server_socket_adapters.h
@@ -12,7 +12,10 @@
#define RTC_BASE_SERVER_SOCKET_ADAPTERS_H_
#include <cstddef>
+#include <utility>
+#include "absl/functional/any_invocable.h"
+#include "rtc_base/sigslot_trampoline.h"
#include "rtc_base/socket.h"
#include "rtc_base/socket_adapters.h"
#include "rtc_base/socket_address.h"
@@ -27,7 +30,23 @@
~AsyncProxyServerSocket() override;
sigslot::signal2<AsyncProxyServerSocket*, const SocketAddress&>
SignalConnectRequest;
+
+ void SubscribeConnectRequest(
+ absl::AnyInvocable<void(AsyncProxyServerSocket*, const SocketAddress&)>
+ callback) {
+ connect_request_trampoline_.Subscribe(std::move(callback));
+ }
+ void NotifyConnectRequest(AsyncProxyServerSocket* socket,
+ const SocketAddress& socket_address) {
+ SignalConnectRequest(socket, socket_address);
+ }
+
virtual void SendConnectResult(int err, const SocketAddress& addr) = 0;
+
+ private:
+ SignalTrampoline<AsyncProxyServerSocket,
+ &AsyncProxyServerSocket::SignalConnectRequest>
+ connect_request_trampoline_;
};
// Implements a socket adapter that performs the server side of a