From fd8a9f28b036315c0ade03a6df2999305807021d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sat, 10 Oct 2020 22:45:06 +0200 Subject: handle user remove Co-authored-by: Eskil Queseth --- mumd/src/audio.rs | 11 +++++++++++ mumd/src/network.rs | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/mumd/src/audio.rs b/mumd/src/audio.rs index 747716c..2d504cf 100644 --- a/mumd/src/audio.rs +++ b/mumd/src/audio.rs @@ -87,6 +87,17 @@ impl Audio { } } } + + pub fn remove_client(&self, session_id: u32) { + match self.client_streams.lock().unwrap().entry(session_id) { + Entry::Occupied(entry) => { + entry.remove(); + } + Entry::Vacant(_) => { + eprintln!("tried to remove session id {} that doesn't exist", session_id); + } + } + } } impl ClientStream { diff --git a/mumd/src/network.rs b/mumd/src/network.rs index a2be9ea..c59754d 100644 --- a/mumd/src/network.rs +++ b/mumd/src/network.rs @@ -158,6 +158,10 @@ async fn listen_tcp( println!("Found user {}", msg.get_name()); audio.lock().unwrap().add_client(msg.get_session()); } + ControlPacket::UserRemove(msg) => { + println!("User {} left", msg.get_session()); + audio.lock().unwrap().remove_client(msg.get_session()); + } _ => {} } } -- cgit v1.2.1