Remove usage of sigslot and replace with a function pointer.

- Deleted unused sigslot.

Bug: webrtc:11943
Change-Id: I7863dd04e3e63fcba0eabd0dd752ab339614814e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/207840
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Lahiru Ginnaliya Gamathige <glahiru@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33327}
diff --git a/pc/dtls_srtp_transport.cc b/pc/dtls_srtp_transport.cc
index 69b0eeb..f272ab79 100644
--- a/pc/dtls_srtp_transport.cc
+++ b/pc/dtls_srtp_transport.cc
@@ -166,7 +166,6 @@
                     static_cast<int>(send_key.size()), send_extension_ids,
                     selected_crypto_suite, &recv_key[0],
                     static_cast<int>(recv_key.size()), recv_extension_ids)) {
-    SignalDtlsSrtpSetupFailure(this, /*rtcp=*/false);
     RTC_LOG(LS_WARNING) << "DTLS-SRTP key installation for RTP failed";
   }
 }
@@ -198,7 +197,6 @@
                      selected_crypto_suite, &rtcp_recv_key[0],
                      static_cast<int>(rtcp_recv_key.size()),
                      recv_extension_ids)) {
-    SignalDtlsSrtpSetupFailure(this, /*rtcp=*/true);
     RTC_LOG(LS_WARNING) << "DTLS-SRTP key installation for RTCP failed";
   }
 }
@@ -306,7 +304,9 @@
   RTC_DCHECK(transport == rtp_dtls_transport_ ||
              transport == rtcp_dtls_transport_);
 
-  SignalDtlsStateChange();
+  if (on_dtls_state_change_) {
+    on_dtls_state_change_();
+  }
 
   if (state != cricket::DTLS_TRANSPORT_CONNECTED) {
     ResetParams();
@@ -321,4 +321,8 @@
   MaybeSetupDtlsSrtp();
 }
 
+void DtlsSrtpTransport::SetOnDtlsStateChange(
+    std::function<void(void)> callback) {
+  on_dtls_state_change_ = std::move(callback);
+}
 }  // namespace webrtc
diff --git a/pc/dtls_srtp_transport.h b/pc/dtls_srtp_transport.h
index 7c4c590..bc82fd5 100644
--- a/pc/dtls_srtp_transport.h
+++ b/pc/dtls_srtp_transport.h
@@ -46,8 +46,7 @@
   void UpdateRecvEncryptedHeaderExtensionIds(
       const std::vector<int>& recv_extension_ids);
 
-  sigslot::signal<DtlsSrtpTransport*, bool> SignalDtlsSrtpSetupFailure;
-  sigslot::signal<> SignalDtlsStateChange;
+  void SetOnDtlsStateChange(std::function<void(void)> callback);
 
   RTCError SetSrtpSendKey(const cricket::CryptoParams& params) override {
     return RTCError(RTCErrorType::UNSUPPORTED_OPERATION,
@@ -97,6 +96,7 @@
   absl::optional<std::vector<int>> recv_extension_ids_;
 
   bool active_reset_srtp_params_ = false;
+  std::function<void(void)> on_dtls_state_change_;
 };
 
 }  // namespace webrtc
diff --git a/pc/jsep_transport_controller.cc b/pc/jsep_transport_controller.cc
index 33b6e3f..be93cd8 100644
--- a/pc/jsep_transport_controller.cc
+++ b/pc/jsep_transport_controller.cc
@@ -506,8 +506,12 @@
   dtls_srtp_transport->SetDtlsTransports(rtp_dtls_transport,
                                          rtcp_dtls_transport);
   dtls_srtp_transport->SetActiveResetSrtpParams(active_reset_srtp_params_);
-  dtls_srtp_transport->SignalDtlsStateChange.connect(
-      this, &JsepTransportController::UpdateAggregateStates_n);
+  // Capturing this in the callback because JsepTransportController will always
+  // outlive the DtlsSrtpTransport.
+  dtls_srtp_transport->SetOnDtlsStateChange([this]() {
+    RTC_DCHECK_RUN_ON(this->network_thread_);
+    this->UpdateAggregateStates_n();
+  });
   return dtls_srtp_transport;
 }