gameServer2/src/server/handlers.rs
changeset 12144 589a2d7d3dc5
parent 12143 7e874846afe3
child 12145 a482c7a5f6e3
equal deleted inserted replaced
12143:7e874846afe3 12144:589a2d7d3dc5
     6 use super::actions::Action;
     6 use super::actions::Action;
     7 use super::actions::Action::*;
     7 use super::actions::Action::*;
     8 use protocol::messages::HWProtocolMessage;
     8 use protocol::messages::HWProtocolMessage;
     9 use protocol::messages::HWServerMessage::*;
     9 use protocol::messages::HWServerMessage::*;
    10 
    10 
    11 pub fn handle(server: &mut HWServer, token: mio::Token, poll: &mio::Poll, action: Action) {
    11 pub fn handle(server: &mut HWServer, token: mio::Token, poll: &mio::Poll, message: HWProtocolMessage) {
    12     match action {
    12     match message {
    13         SendMe(msg) => server.send(token, &msg),
    13         HWProtocolMessage::Ping =>
    14         ByeClient(msg) => {
    14             server.react(token, poll, vec![SendMe(Pong.to_raw_protocol())]),
    15             server.react(token, poll, vec![
    15         HWProtocolMessage::Quit(Some(msg)) =>
    16                 SendMe(Bye(&msg).to_raw_protocol()),
    16             server.react(token, poll, vec![ByeClient("User quit: ".to_string() + &msg)]),
    17                 RemoveClient,
    17         HWProtocolMessage::Quit(None) =>
    18                 ]);
    18             server.react(token, poll, vec![ByeClient("User quit".to_string())]),
    19         },
    19         HWProtocolMessage::Nick(nick) =>
    20         RemoveClient => {
    20             if server.clients[token].nick.len() == 0 {
    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())]);
    21                 server.react(token, poll, vec![SendMe(Nick(&nick).to_raw_protocol())]);
    34                 server.clients[token].nick = nick;
    22                 server.clients[token].nick = nick;
    35             },
    23             },
    36             HWProtocolMessage::Malformed => warn!("Malformed/unknown message"),
    24         HWProtocolMessage::Proto(proto) =>
    37             HWProtocolMessage::Empty => warn!("Empty message"),
    25                 server.clients[token].protocolNumber = proto,
    38             _ => unimplemented!(),
    26         HWProtocolMessage::Malformed => warn!("Malformed/unknown message"),
    39         }
    27         HWProtocolMessage::Empty => warn!("Empty message"),
    40         //_ => unimplemented!(),
    28         _ => unimplemented!(),
    41     }
    29     }
    42 }
    30 }