From 3a3d0fc3d4733f8908e23a03f860d76340479ec4 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Tue, 11 Jun 2019 23:53:30 +0200 Subject: Reorganize Project structure --- game_server/src/scribble_group.rs | 65 --------------------------------------- 1 file changed, 65 deletions(-) delete mode 100644 game_server/src/scribble_group.rs (limited to 'game_server/src/scribble_group.rs') diff --git a/game_server/src/scribble_group.rs b/game_server/src/scribble_group.rs deleted file mode 100644 index 8980e7b..0000000 --- a/game_server/src/scribble_group.rs +++ /dev/null @@ -1,65 +0,0 @@ -use crate::group::{Group, GroupId}; -use crate::server::{UserId, GameClient, - ClientSender, ClientReceiver, - GameServerError}; -use std::collections::HashMap; -use std::sync::{Arc, Mutex}; - -pub struct ScribbleGroup { - id: GroupId, - name: String, - senders: Arc>> -} - -impl Group for ScribbleGroup { - fn id(&self) -> GroupId { - self.id - } - - fn group_type(&self) -> String { - "scribble".to_string() - } - - fn name(&self) -> String { - self.name.clone() - } - - fn run(&mut self) { - info!("a new group {}:'{}' runs now", self.id, self.name); - } - - fn add_client(&mut self, id: UserId, client: GameClient) -> Result<(), GameServerError> { - debug!("user {} joined the group {}:'{}'", id, self.id, self.name); - let (sen, rec) = client.split(); - self.senders.lock().unwrap().insert(id, sen); - let senders_mutex = self.senders.clone(); - let self_uid = id; - std::thread::spawn(move || Self::broadcast_clients(self_uid, rec, senders_mutex)); - Ok(()) - } -} - -impl ScribbleGroup { - pub fn new(id: GroupId, name: String) -> Self { - Self { id, name, senders: Arc::new(Mutex::new(HashMap::new())) } - } - - fn broadcast_clients(self_uid: UserId, mut rec: ClientReceiver, senders_mutex: Arc>>) { - loop { - 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) - .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); - } -} -- cgit v1.2.3-70-g09d2