diff --git a/net/webrtc/src/janusvr_signaller/imp.rs b/net/webrtc/src/janusvr_signaller/imp.rs index 226ec2ee..a5a3b074 100644 --- a/net/webrtc/src/janusvr_signaller/imp.rs +++ b/net/webrtc/src/janusvr_signaller/imp.rs @@ -51,6 +51,15 @@ enum JanusId { Num(u64), } +impl std::fmt::Display for JanusId { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + JanusId::Str(s) => write!(f, "{s}"), + JanusId::Num(n) => write!(f, "{n}"), + } + } +} + #[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] struct KeepAliveMsg { janus: String, @@ -166,11 +175,18 @@ struct RoomEvent { #[derive(Serialize, Deserialize, Debug)] #[serde(tag = "videoroom")] +struct RoomDestroyed { + room: JanusId, +} + +#[derive(Serialize, Deserialize, Debug)] +#[serde(tag = "videoroom", rename_all = "kebab-case")] enum VideoRoomData { #[serde(rename = "joined")] Joined(RoomJoined), #[serde(rename = "event")] Event(RoomEvent), + Destroyed(RoomDestroyed), } #[derive(Serialize, Deserialize, Debug)] @@ -447,6 +463,14 @@ impl Signaller { } } } + VideoRoomData::Destroyed(room_destroyed) => { + gst::trace!(CAT, imp: self, "Room {} has been destroyed", room_destroyed.room); + + self.raise_error(format!( + "room {} has been destroyed", + room_destroyed.room + )); + } } } }