summaryrefslogtreecommitdiff
path: root/game_server/src/scribble_group.rs
diff options
context:
space:
mode:
authornatrixaeria <janng@gmx.de>2019-05-20 20:04:35 +0200
committernatrixaeria <janng@gmx.de>2019-05-20 20:04:35 +0200
commit368b018f567a804cf02e3fea4246a5c082f8c616 (patch)
tree69d878c0dfc3518dc919bab1876dd7cd5fc3f7bf /game_server/src/scribble_group.rs
parentc7bc91ecd6c32afab52c5e45b569e3945bdd1056 (diff)
Remove users from server, if not reachable
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);
});
}
}