gameServer2/src/server/handlers.rs
changeset 12144 589a2d7d3dc5
parent 12143 7e874846afe3
child 12145 a482c7a5f6e3
--- a/gameServer2/src/server/handlers.rs	Tue Jan 24 20:28:16 2017 +0300
+++ b/gameServer2/src/server/handlers.rs	Wed Jan 25 23:48:23 2017 +0300
@@ -8,35 +8,23 @@
 use protocol::messages::HWProtocolMessage;
 use protocol::messages::HWServerMessage::*;
 
-pub fn handle(server: &mut HWServer, token: mio::Token, poll: &mio::Poll, action: Action) {
-    match action {
-        SendMe(msg) => server.send(token, &msg),
-        ByeClient(msg) => {
-            server.react(token, poll, vec![
-                SendMe(Bye(&msg).to_raw_protocol()),
-                RemoveClient,
-                ]);
-        },
-        RemoveClient => {
-            server.clients[token].deregister(poll);
-            server.clients.remove(token);
-        },
-        ReactProtocolMessage(msg) => match msg {
-            HWProtocolMessage::Ping =>
-                server.react(token, poll, vec![SendMe(Pong.to_raw_protocol())]),
-            HWProtocolMessage::Quit(Some(msg)) =>
-                server.react(token, poll, vec![ByeClient("User quit: ".to_string() + &msg)]),
-            HWProtocolMessage::Quit(None) =>
-                server.react(token, poll, vec![ByeClient("User quit".to_string())]),
-            HWProtocolMessage::Nick(nick) =>
-                if server.clients[token].nick.len() == 0 {
+pub fn handle(server: &mut HWServer, token: mio::Token, poll: &mio::Poll, message: HWProtocolMessage) {
+    match message {
+        HWProtocolMessage::Ping =>
+            server.react(token, poll, vec![SendMe(Pong.to_raw_protocol())]),
+        HWProtocolMessage::Quit(Some(msg)) =>
+            server.react(token, poll, vec![ByeClient("User quit: ".to_string() + &msg)]),
+        HWProtocolMessage::Quit(None) =>
+            server.react(token, poll, vec![ByeClient("User quit".to_string())]),
+        HWProtocolMessage::Nick(nick) =>
+            if server.clients[token].nick.len() == 0 {
                 server.react(token, poll, vec![SendMe(Nick(&nick).to_raw_protocol())]);
                 server.clients[token].nick = nick;
             },
-            HWProtocolMessage::Malformed => warn!("Malformed/unknown message"),
-            HWProtocolMessage::Empty => warn!("Empty message"),
-            _ => unimplemented!(),
-        }
-        //_ => unimplemented!(),
+        HWProtocolMessage::Proto(proto) =>
+                server.clients[token].protocolNumber = proto,
+        HWProtocolMessage::Malformed => warn!("Malformed/unknown message"),
+        HWProtocolMessage::Empty => warn!("Empty message"),
+        _ => unimplemented!(),
     }
 }