From e5e3dc6e197a014b69c933a1e8912b528c55ed8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Le=20Page?= Date: Tue, 8 Aug 2023 14:00:08 +0200 Subject: [PATCH] net/webrtc/signaller: add property to get the connection client ID Part-of: --- net/webrtc/src/signaller/imp.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/webrtc/src/signaller/imp.rs b/net/webrtc/src/signaller/imp.rs index 9c8b9d7f..3dda6793 100644 --- a/net/webrtc/src/signaller/imp.rs +++ b/net/webrtc/src/signaller/imp.rs @@ -63,6 +63,7 @@ struct State { send_task_handle: Option>>, receive_task_handle: Option>, producers: HashSet, + client_id: Option, } impl Signaller { @@ -192,6 +193,8 @@ impl Signaller { } fn set_status(&self, meta: &Option, peer_id: &str) { + self.state.lock().unwrap().client_id = Some(peer_id.to_string()); + let role = self.settings.lock().unwrap().role; self.send(p::IncomingMessage::SetPeerStatus(match role { super::WebRTCSignallerRole::Consumer => p::PeerStatus { @@ -449,6 +452,9 @@ impl ObjectImpl for Signaller { glib::ParamSpecEnum::builder_with_default("role", WebRTCSignallerRole::Consumer) .flags(glib::ParamFlags::READWRITE) .build(), + glib::ParamSpecString::builder("client-id") + .flags(glib::ParamFlags::READABLE) + .build(), ] }); @@ -508,6 +514,7 @@ impl ObjectImpl for Signaller { } "cafile" => settings.cafile.to_value(), "role" => settings.role.to_value(), + "client-id" => self.state.lock().unwrap().client_id.to_value(), _ => unimplemented!(), } } @@ -547,6 +554,7 @@ impl SignallableImpl for Signaller { }); } state.producers.clear(); + state.client_id = None; } fn send_sdp(&self, session_id: &str, sdp: &gst_webrtc::WebRTCSessionDescription) {