gameServer2/src/server/handlers.rs
changeset 12149 44b06731278b
parent 12148 8591375271b8
child 12150 bbefbd1a3b0a
equal deleted inserted replaced
12148:8591375271b8 12149:44b06731278b
     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 pub fn handle(server: &mut HWServer, token: mio::Token, poll: &mio::Poll, message: HWProtocolMessage) {
       
    12     match message {
       
    13         HWProtocolMessage::Ping =>
       
    14             server.react(token, poll, vec![SendMe(Pong.to_raw_protocol())]),
       
    15         HWProtocolMessage::Quit(Some(msg)) =>
       
    16             server.react(token, poll, vec![ByeClient("User quit: ".to_string() + &msg)]),
       
    17         HWProtocolMessage::Quit(None) =>
       
    18             server.react(token, poll, vec![ByeClient("User quit".to_string())]),
       
    19         HWProtocolMessage::Nick(nick) =>
       
    20             if server.clients[token].room_id == None {
       
    21                 server.react(token, poll, vec![SendMe(Nick(&nick).to_raw_protocol())]);
       
    22                 server.clients[token].nick = nick;
       
    23                 server.react(token, poll, vec![CheckRegistered]);
       
    24             },
       
    25         HWProtocolMessage::Proto(proto) => {
       
    26                 server.clients[token].protocol_number = proto;
       
    27                 server.react(token, poll, vec![CheckRegistered]);
       
    28         },
       
    29         HWProtocolMessage::List => warn!("Deprecated LIST message received"),
       
    30         HWProtocolMessage::Malformed => warn!("Malformed/unknown message"),
       
    31         HWProtocolMessage::Empty => warn!("Empty message"),
       
    32         _ => unimplemented!(),
       
    33     }
       
    34 }