diff options
Diffstat (limited to 'mumd')
| -rw-r--r-- | mumd/src/audio.rs | 11 | ||||
| -rw-r--r-- | mumd/src/network.rs | 4 |
2 files changed, 15 insertions, 0 deletions
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()); + } _ => {} } } |
