gameServer2/src/server/handlers/mod.rs
branchui-scaling
changeset 15283 c4fd2813b127
parent 13390 0135e64c6c66
parent 15279 7ab5cf405686
child 15663 d92eeb468dad
equal deleted inserted replaced
13390:0135e64c6c66 15283:c4fd2813b127
     1 use mio;
       
     2 use std::io::Write;
       
     3 use std::io;
       
     4 
       
     5 use super::server::HWServer;
       
     6 use super::actions::Action;
       
     7 use super::actions::Action::*;
       
     8 use protocol::messages::HWProtocolMessage;
       
     9 use protocol::messages::HWServerMessage::*;
       
    10 
       
    11 mod loggingin;
       
    12 mod lobby;
       
    13 mod inroom;
       
    14 
       
    15 pub fn handle(server: &mut HWServer, token: usize, message: HWProtocolMessage) {
       
    16     match message {
       
    17         HWProtocolMessage::Ping =>
       
    18             server.react(token, vec![SendMe(Pong)]),
       
    19         HWProtocolMessage::Quit(Some(msg)) =>
       
    20             server.react(token, vec![ByeClient("User quit: ".to_string() + &msg)]),
       
    21         HWProtocolMessage::Quit(None) =>
       
    22             server.react(token, vec![ByeClient("User quit".to_string())]),
       
    23         HWProtocolMessage::Malformed => warn!("Malformed/unknown message"),
       
    24         HWProtocolMessage::Empty => warn!("Empty message"),
       
    25         _ => {
       
    26             match server.clients[token].room_id {
       
    27                 None =>
       
    28                     loggingin::handle(server, token, message),
       
    29                 Some(id) if id == server.lobby_id =>
       
    30                     lobby::handle(server, token, message),
       
    31                 _ =>
       
    32                     inroom::handle(server, token, message)
       
    33             }
       
    34         },
       
    35     }
       
    36 }