diff -r 6843c4551cde -r 06672690d71b rust/hedgewars-server/src/server/handlers.rs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rust/hedgewars-server/src/server/handlers.rs Mon Dec 10 22:44:46 2018 +0100 @@ -0,0 +1,44 @@ +use mio; +use std::{io, io::Write}; + +use super::{ + core::HWServer, + actions::{Action, Action::*}, + coretypes::ClientId +}; +use crate::{ + protocol::messages::{ + HWProtocolMessage, + HWServerMessage::* + } +}; +use log::*; + +mod loggingin; +mod lobby; +mod inroom; +mod common; +mod checker; + +pub fn handle(server: &mut HWServer, client_id: ClientId, message: HWProtocolMessage) { + match message { + HWProtocolMessage::Ping => + server.react(client_id, vec![Pong.send_self().action()]), + HWProtocolMessage::Quit(Some(msg)) => + server.react(client_id, vec![ByeClient("User quit: ".to_string() + &msg)]), + HWProtocolMessage::Quit(None) => + server.react(client_id, vec![ByeClient("User quit".to_string())]), + HWProtocolMessage::Malformed => warn!("Malformed/unknown message"), + HWProtocolMessage::Empty => warn!("Empty message"), + _ => { + match server.clients[client_id].room_id { + None => + loggingin::handle(server, client_id, message), + Some(id) if id == server.lobby_id => + lobby::handle(server, client_id, message), + Some(id) => + inroom::handle(server, client_id, id, message) + } + }, + } +}