gameServer2/src/server/handlers.rs
changeset 12143 7e874846afe3
child 12144 589a2d7d3dc5
equal deleted inserted replaced
12142:4d7d41be1993 12143:7e874846afe3
       
     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, action: Action) {
       
    12     match action {
       
    13         SendMe(msg) => server.send(token, &msg),
       
    14         ByeClient(msg) => {
       
    15             server.react(token, poll, vec![
       
    16                 SendMe(Bye(&msg).to_raw_protocol()),
       
    17                 RemoveClient,
       
    18                 ]);
       
    19         },
       
    20         RemoveClient => {
       
    21             server.clients[token].deregister(poll);
       
    22             server.clients.remove(token);
       
    23         },
       
    24         ReactProtocolMessage(msg) => match msg {
       
    25             HWProtocolMessage::Ping =>
       
    26                 server.react(token, poll, vec![SendMe(Pong.to_raw_protocol())]),
       
    27             HWProtocolMessage::Quit(Some(msg)) =>
       
    28                 server.react(token, poll, vec![ByeClient("User quit: ".to_string() + &msg)]),
       
    29             HWProtocolMessage::Quit(None) =>
       
    30                 server.react(token, poll, vec![ByeClient("User quit".to_string())]),
       
    31             HWProtocolMessage::Nick(nick) =>
       
    32                 if server.clients[token].nick.len() == 0 {
       
    33                 server.react(token, poll, vec![SendMe(Nick(&nick).to_raw_protocol())]);
       
    34                 server.clients[token].nick = nick;
       
    35             },
       
    36             HWProtocolMessage::Malformed => warn!("Malformed/unknown message"),
       
    37             HWProtocolMessage::Empty => warn!("Empty message"),
       
    38             _ => unimplemented!(),
       
    39         }
       
    40         //_ => unimplemented!(),
       
    41     }
       
    42 }