diff -r 0eedc17055a0 -r cdf69667593b gameServer2/src/server/network.rs --- a/gameServer2/src/server/network.rs Thu Jun 14 16:44:27 2018 -0400 +++ b/gameServer2/src/server/network.rs Mon Jun 18 09:22:53 2018 -0400 @@ -55,7 +55,7 @@ let result = loop { match self.decoder.read_from(&mut self.socket) { Ok(bytes) => { - debug!("Read {} bytes", bytes); + debug!("Client {}: read {} bytes", self.id, bytes); bytes_read += bytes; if bytes == 0 { let result = if bytes_read == 0 { @@ -167,9 +167,17 @@ fn flush_server_messages(&mut self) { debug!("{} pending server messages", self.server.output.len()); for PendingMessage(destination, msg) in self.server.output.drain(..) { + debug!("Message {:?} to {:?}", msg, destination); match destination { + Destination::ToAll => { + let msg_string = msg.to_raw_protocol(); + for (client_id, client) in self.clients.iter_mut() { + client.send_string(&msg_string); + self.pending.insert((client_id, NetworkClientState::NeedsWrite)); + } + }, Destination::ToSelf(id) => { - if let Some(ref mut client) = self.clients.get_mut(id) { + if let Some(client) = self.clients.get_mut(id) { client.send_msg(msg); self.pending.insert((id, NetworkClientState::NeedsWrite)); } @@ -182,6 +190,15 @@ self.pending.insert((client_id, NetworkClientState::NeedsWrite)); } } + }, + Destination::ToSelected(client_ids) => { + let msg_string = msg.to_raw_protocol(); + for id in client_ids { + if let Some(client) = self.clients.get_mut(id) { + client.send_string(&msg_string); + self.pending.insert((id, NetworkClientState::NeedsWrite)); + } + } } } }