aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2020-10-10 22:45:06 +0200
committerGustav Sörnäs <gustav@sornas.net>2020-10-10 22:45:06 +0200
commitfd8a9f28b036315c0ade03a6df2999305807021d (patch)
tree4da0c7892a8357e83e7ec3359954383bfa7df913
parentb3339294dac5a7f448de8c3849ab198afff8d14b (diff)
downloadmum-fd8a9f28b036315c0ade03a6df2999305807021d.tar.gz
handle user remove
Co-authored-by: Eskil Queseth <eskilq@kth.se>
-rw-r--r--mumd/src/audio.rs11
-rw-r--r--mumd/src/network.rs4
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());
+ }
_ => {}
}
}