summaryrefslogtreecommitdiff
path: root/game_server/src/scribble_group.rs
diff options
context:
space:
mode:
Diffstat (limited to 'game_server/src/scribble_group.rs')
-rw-r--r--game_server/src/scribble_group.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/game_server/src/scribble_group.rs b/game_server/src/scribble_group.rs
index e68c6df..01090de 100644
--- a/game_server/src/scribble_group.rs
+++ b/game_server/src/scribble_group.rs
@@ -35,15 +35,21 @@ impl Group for ScribbleGroup {
let self_uid = id;
std::thread::spawn(move || {
loop {
- let message = rec.recv_message().unwrap();
- info!("got message: '{:?}'", message);
+ let message = match rec.recv_message() {
+ Ok(x) => x,
+ _ => break
+ };
+ //trace!("got message: '{:?}'", message);
let mut senders = senders_mutex.lock().unwrap();
for (uid, sender) in senders.iter_mut() {
if self_uid != *uid {
- sender.send_message(&message);
+ sender.send_message(&message)
+ .unwrap_or_else(|_| debug!("tried to send message to {}, but failed", *uid));
}
}
}
+ senders_mutex.lock().unwrap().remove(&self_uid);
+ info!("client {} has left", self_uid);
});
}
}