1 use mio; |
1 use mio; |
2 use std::{io, io::Write}; |
2 use std::{io, io::Write}; |
3 |
3 |
4 use super::{ |
4 use super::{ |
|
5 actions::{Action, Action::*}, |
5 core::HWServer, |
6 core::HWServer, |
6 actions::{Action, Action::*}, |
7 coretypes::ClientId, |
7 coretypes::ClientId |
|
8 }; |
8 }; |
9 use crate::{ |
9 use crate::protocol::messages::{HWProtocolMessage, HWServerMessage::*}; |
10 protocol::messages::{ |
|
11 HWProtocolMessage, |
|
12 HWServerMessage::* |
|
13 } |
|
14 }; |
|
15 use log::*; |
10 use log::*; |
16 |
11 |
|
12 mod checker; |
|
13 mod common; |
|
14 mod inroom; |
|
15 mod lobby; |
17 mod loggingin; |
16 mod loggingin; |
18 mod lobby; |
|
19 mod inroom; |
|
20 mod common; |
|
21 mod checker; |
|
22 |
17 |
23 pub fn handle(server: &mut HWServer, client_id: ClientId, message: HWProtocolMessage) { |
18 pub fn handle(server: &mut HWServer, client_id: ClientId, message: HWProtocolMessage) { |
24 match message { |
19 match message { |
25 HWProtocolMessage::Ping => |
20 HWProtocolMessage::Ping => server.react(client_id, vec![Pong.send_self().action()]), |
26 server.react(client_id, vec![Pong.send_self().action()]), |
21 HWProtocolMessage::Quit(Some(msg)) => { |
27 HWProtocolMessage::Quit(Some(msg)) => |
22 server.react(client_id, vec![ByeClient("User quit: ".to_string() + &msg)]) |
28 server.react(client_id, vec![ByeClient("User quit: ".to_string() + &msg)]), |
23 } |
29 HWProtocolMessage::Quit(None) => |
24 HWProtocolMessage::Quit(None) => { |
30 server.react(client_id, vec![ByeClient("User quit".to_string())]), |
25 server.react(client_id, vec![ByeClient("User quit".to_string())]) |
|
26 } |
31 HWProtocolMessage::Malformed => warn!("Malformed/unknown message"), |
27 HWProtocolMessage::Malformed => warn!("Malformed/unknown message"), |
32 HWProtocolMessage::Empty => warn!("Empty message"), |
28 HWProtocolMessage::Empty => warn!("Empty message"), |
33 _ => { |
29 _ => match server.clients[client_id].room_id { |
34 match server.clients[client_id].room_id { |
30 None => loggingin::handle(server, client_id, message), |
35 None => |
31 Some(id) if id == server.lobby_id => lobby::handle(server, client_id, message), |
36 loggingin::handle(server, client_id, message), |
32 Some(id) => inroom::handle(server, client_id, id, message), |
37 Some(id) if id == server.lobby_id => |
|
38 lobby::handle(server, client_id, message), |
|
39 Some(id) => |
|
40 inroom::handle(server, client_id, id, message) |
|
41 } |
|
42 }, |
33 }, |
43 } |
34 } |
44 } |
35 } |