diff options
author | tom barrett <spalf0@gmail.com> | 2018-06-14 10:18:22 -0500 |
---|---|---|
committer | tom barrett <spalf0@gmail.com> | 2018-06-14 10:18:22 -0500 |
commit | 7094849bf164ff6f853c8f6812a0e831a66762f3 (patch) | |
tree | 9f553e799457ddc21317299d5c82facf63dc243b /src/server/navigation.rs | |
parent | 01fee8c1a2449a0d086a8bde42de1d61dbdc9231 (diff) |
updated dependancies, made it so server still processes events if client connection is disconnected
Diffstat (limited to 'src/server/navigation.rs')
-rw-r--r-- | src/server/navigation.rs | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/server/navigation.rs b/src/server/navigation.rs index 2a2f105..461a2b8 100644 --- a/src/server/navigation.rs +++ b/src/server/navigation.rs @@ -9,10 +9,9 @@ use mass::{Mass, MassType}; use server::connection::ServerConnection; impl ServerConnection { - pub fn server_navigation(&mut self, masses : &mut HashMap<String, Mass>) -> bool { + pub fn server_navigation(&mut self, masses : &mut HashMap<String, Mass>) { let mut ship = masses.remove(&self.name).unwrap(); let ship_clone = ship.clone(); - let mut connection_good = true; if let MassType::Ship{ref mut navigation, ..} = ship.mass_type { let mut navigation = navigation.as_mut().unwrap(); @@ -21,23 +20,26 @@ impl ServerConnection { distance(ship_clone.position, mass.position) < navigation.range) .collect(); within_range.insert(&self.name, &ship_clone); - let send = serde_json::to_string(&within_range).unwrap() + "\n"; - match self.stream.write(send.as_bytes()) { - Ok(_result) => (), - Err(_error) => connection_good = false, - } - let mut recv = String::new(); - match self.buff_r.read_line(&mut recv) { - Ok(_result) => (), - Err(_error) => (), - } - if !recv.is_empty() { - navigation.give_target(recv.replace("\n", "")); + if self.open { + let send = serde_json::to_string(&within_range).unwrap() + "\n"; + + match self.stream.write(send.as_bytes()) { + Ok(_result) => (), + Err(_error) => self.open = false, + }; + + let mut recv = String::new(); + match self.buff_r.read_line(&mut recv) { + Ok(_result) => (), + Err(_error) => (), + } + if !recv.is_empty() { + navigation.give_target(recv.replace("\n", "")); + } } } masses.insert(self.name.clone(), ship); - connection_good } } |