diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2020-10-10 22:45:06 +0200 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2020-10-10 22:45:06 +0200 |
| commit | fd8a9f28b036315c0ade03a6df2999305807021d (patch) | |
| tree | 4da0c7892a8357e83e7ec3359954383bfa7df913 /mumd | |
| parent | b3339294dac5a7f448de8c3849ab198afff8d14b (diff) | |
| download | mum-fd8a9f28b036315c0ade03a6df2999305807021d.tar.gz | |
handle user remove
Co-authored-by: Eskil Queseth <eskilq@kth.se>
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()); + } _ => {} } } |
