From c45a9524b307c264e69aa017fcf370d71ea799da Mon Sep 17 00:00:00 2001 From: natrixaeria Date: Sun, 19 May 2019 15:39:48 +0200 Subject: Push new clients to a Map --- game_server/src/gameserver.rs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'game_server/src') diff --git a/game_server/src/gameserver.rs b/game_server/src/gameserver.rs index 9334a27..6f6dead 100644 --- a/game_server/src/gameserver.rs +++ b/game_server/src/gameserver.rs @@ -4,8 +4,10 @@ use websocket::{OwnedMessage, server::{NoTlsAcceptor, InvalidConnection, sync::AcceptResult}}; use std::net::{SocketAddr, ToSocketAddrs, TcpStream}; -use std::sync::mpsc; -use std::sync::mpsc::{Sender, Receiver}; +use std::sync::{mpsc, + mpsc::{Sender, Receiver}, + Arc, Mutex}; +use std::collections::HashMap; use super::lobby::Lobby; use super::backend_connection::BackendConnection; @@ -25,6 +27,7 @@ pub struct GameServer { addr: SocketAddr, lobby: Lobby, backend: BackendConnection, + clients: Arc>>, } pub struct GameClient { @@ -47,7 +50,7 @@ impl GameClient { .recv_message() .ok()?; if let OwnedMessage::Text(text) = message { - text.parse::().ok() + text.parse().ok() } else { None } @@ -68,6 +71,7 @@ impl GameServer { addr, lobby, backend, + clients: Arc::new(Mutex::new(HashMap::new())), } } @@ -81,9 +85,15 @@ impl GameServer { } fn add_client(&self, mut client: GameClient) { + let clients = Arc::clone(&self.clients); std::thread::spawn(move || { - println!("Token: {:?}", client.require_token()); - loop { std::thread::sleep(std::time::Duration::from_millis(100)); } + let token = client.require_token(); + if let Some(token) = token { + println!("Token: {}", token); + clients.lock().unwrap().insert(token, client); + } else { + warn!("Client sent invalid token"); + } }); } -- cgit v1.2.3-54-g00ecf