4 use server::actions::Action; |
4 use server::actions::Action; |
5 use server::actions::Action::*; |
5 use server::actions::Action::*; |
6 use protocol::messages::HWProtocolMessage; |
6 use protocol::messages::HWProtocolMessage; |
7 use protocol::messages::HWServerMessage::*; |
7 use protocol::messages::HWServerMessage::*; |
8 |
8 |
9 pub fn handle(server: &mut HWServer, token: mio::Token, poll: &mio::Poll, message: HWProtocolMessage) { |
9 pub fn handle(server: &mut HWServer, token: usize, message: HWProtocolMessage) { |
|
10 use protocol::messages::HWProtocolMessage::*; |
10 match message { |
11 match message { |
11 HWProtocolMessage::Chat(msg) => { |
12 Chat(msg) => { |
12 let chat_msg = ChatMsg(&server.clients[token].nick, &msg).to_raw_protocol(); |
13 let chat_msg = ChatMsg(server.clients[token].nick.clone(), msg); |
13 server.react(token, poll, vec![SendAllButMe(chat_msg)]); |
14 server.react(token, vec![SendAllButMe(chat_msg)]); |
14 }, |
15 }, |
15 HWProtocolMessage::CreateRoom(name, password) => { |
16 CreateRoom(name, password) => { |
16 let room_exists = server.rooms.iter().find(|&r| r.name == name).is_some(); |
17 let room_exists = server.rooms.iter().find(|&(_, r)| r.name == name).is_some(); |
17 if room_exists { |
18 if room_exists { |
18 server.react(token, poll, vec![Warn("Room exists".to_string())]); |
19 server.react(token, vec![Warn("Room exists".to_string())]); |
19 } else { |
20 } else { |
20 let flags_msg = ClientFlags("+hr", &[&server.clients[token].nick]).to_raw_protocol(); |
21 let flags_msg = ClientFlags("+hr".to_string(), vec![server.clients[token].nick.clone()]); |
21 { |
22 { |
22 let c = &mut server.clients[token]; |
23 let c = &mut server.clients[token]; |
23 c.is_master = true; |
24 c.is_master = true; |
24 c.is_ready = true; |
25 c.is_ready = true; |
25 c.is_joined_mid_game = false; |
26 c.is_joined_mid_game = false; |
26 } |
27 } |
27 server.react(token, poll, vec![ |
28 server.react(token, vec![ |
28 AddRoom(name, password) |
29 AddRoom(name, password) |
29 , SendMe(flags_msg) |
30 , SendMe(flags_msg) |
30 ]); |
31 ]); |
31 } |
32 } |
32 }, |
33 }, |
33 HWProtocolMessage::Join(name, password) => { |
34 Join(name, password) => { |
34 |
35 |
35 }, |
36 }, |
36 HWProtocolMessage::List => warn!("Deprecated LIST message received"), |
37 List => warn!("Deprecated LIST message received"), |
37 _ => warn!("Incorrect command in lobby state"), |
38 _ => warn!("Incorrect command in lobby state"), |
38 } |
39 } |
39 } |
40 } |