gameServer2/src/server/server.rs
changeset 12142 4d7d41be1993
parent 12141 78925eff02c2
child 12143 7e874846afe3
equal deleted inserted replaced
12141:78925eff02c2 12142:4d7d41be1993
     7 use utils;
     7 use utils;
     8 use server::client::HWClient;
     8 use server::client::HWClient;
     9 use server::actions::Action;
     9 use server::actions::Action;
    10 use server::actions::Action::*;
    10 use server::actions::Action::*;
    11 use protocol::messages::HWProtocolMessage::*;
    11 use protocol::messages::HWProtocolMessage::*;
       
    12 use protocol::messages::HWServerMessage;
    12 
    13 
    13 type Slab<T> = slab::Slab<T, Token>;
    14 type Slab<T> = slab::Slab<T, Token>;
    14 
    15 
    15 pub struct HWServer {
    16 pub struct HWServer {
    16     listener: TcpListener,
    17     listener: TcpListener,
    88         for action in actions {
    89         for action in actions {
    89             match action {
    90             match action {
    90                 SendMe(msg) => self.send(token, &msg),
    91                 SendMe(msg) => self.send(token, &msg),
    91                 ByeClient(msg) => {
    92                 ByeClient(msg) => {
    92                     self.react(token, poll, vec![
    93                     self.react(token, poll, vec![
    93                         SendMe(Bye(&msg).to_raw_protocol()),
    94                         SendMe(HWServerMessage::Bye(&msg).to_raw_protocol()),
    94                         RemoveClient,
    95                         RemoveClient,
    95                     ]);
    96                     ]);
    96                 },
    97                 },
    97                 SetNick(nick) => {
       
    98                     self.send(token, &Nick(&nick).to_raw_protocol());
       
    99                     self.clients[token].nick = nick;
       
   100                 }
       
   101                 RemoveClient => {
    98                 RemoveClient => {
   102                     self.clients[token].deregister(poll);
    99                     self.clients[token].deregister(poll);
   103                     self.clients.remove(token);
   100                     self.clients.remove(token);
   104                 },
   101                 },
       
   102                 ReactProtocolMessage(msg) => match msg {
       
   103                     Ping => self.react(token, poll, vec![SendMe(HWServerMessage::Pong.to_raw_protocol())]),
       
   104                     Quit(Some(msg)) => self.react(token, poll, vec![ByeClient("User quit: ".to_string() + &msg)]),
       
   105                     Quit(None) => self.react(token, poll, vec![ByeClient("User quit".to_string())]),
       
   106                     Nick(nick) => if self.clients[token].nick.len() == 0 {
       
   107                         self.send(token, &HWServerMessage::Nick(&nick).to_raw_protocol());
       
   108                         self.clients[token].nick = nick;
       
   109                     },
       
   110                     Malformed => warn!("Malformed/unknown message"),
       
   111                     Empty => warn!("Empty message"),
       
   112                     _ => unimplemented!(),
       
   113                 }
   105                 //_ => unimplemented!(),
   114                 //_ => unimplemented!(),
   106             }
   115             }
   107         }
   116         }
   108     }
   117     }
   109 }
   118 }