Use sigslot trampoline in ProxyBinding
Bug: webrtc:42222066
Change-Id: I12d04f2b906ab3eea7b1ad4d0230648d6d63b342
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/410580
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45767}
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 49245ac..0c89bed 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -1836,6 +1836,7 @@
"third_party/sigslot",
"//third_party/abseil-cpp/absl/algorithm:container",
"//third_party/abseil-cpp/absl/base:core_headers",
+ "//third_party/abseil-cpp/absl/functional:any_invocable",
"//third_party/abseil-cpp/absl/memory",
"//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 8ef45cf..31fdc50 100644
--- a/rtc_base/proxy_server.cc
+++ b/rtc_base/proxy_server.cc
@@ -71,7 +71,8 @@
ext_socket_(ext_socket),
connected_(false),
out_buffer_(kBufferSize),
- in_buffer_(kBufferSize) {
+ in_buffer_(kBufferSize),
+ destroyed_trampoline_(this) {
int_socket_->SignalConnectRequest.connect(this,
&ProxyBinding::OnConnectRequest);
int_socket_->SignalReadEvent.connect(this, &ProxyBinding::OnInternalRead);
@@ -151,7 +152,7 @@
}
void ProxyBinding::Destroy() {
- SignalDestroyed(this);
+ NotifyDestroyed(this);
}
} // namespace webrtc
diff --git a/rtc_base/proxy_server.h b/rtc_base/proxy_server.h
index 81fd84b..9f334c5 100644
--- a/rtc_base/proxy_server.h
+++ b/rtc_base/proxy_server.h
@@ -12,10 +12,13 @@
#define RTC_BASE_PROXY_SERVER_H_
#include <memory>
+#include <utility>
#include <vector>
+#include "absl/functional/any_invocable.h"
#include "rtc_base/memory/fifo_buffer.h"
#include "rtc_base/server_socket_adapters.h"
+#include "rtc_base/sigslot_trampoline.h"
#include "rtc_base/socket.h"
#include "rtc_base/socket_address.h"
#include "rtc_base/socket_factory.h"
@@ -39,6 +42,11 @@
ProxyBinding& operator=(const ProxyBinding&) = delete;
sigslot::signal1<ProxyBinding*> SignalDestroyed;
+ void SubscribeDestroyed(
+ absl::AnyInvocable<void(ProxyBinding* proxy)> callback) {
+ destroyed_trampoline_.Subscribe(std::move(callback));
+ }
+ void NotifyDestroyed(ProxyBinding* proxy) { SignalDestroyed(proxy); }
private:
void OnConnectRequest(AsyncProxyServerSocket* socket,
@@ -61,6 +69,9 @@
bool connected_;
FifoBuffer out_buffer_;
FifoBuffer in_buffer_;
+
+ SignalTrampoline<ProxyBinding, &ProxyBinding::SignalDestroyed>
+ destroyed_trampoline_;
};
class ProxyServer : public sigslot::has_slots<> {