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/refinery.rs | |
parent | 01fee8c1a2449a0d086a8bde42de1d61dbdc9231 (diff) |
updated dependancies, made it so server still processes events if client connection is disconnected
Diffstat (limited to 'src/server/refinery.rs')
-rw-r--r-- | src/server/refinery.rs | 55 |
1 files changed, 32 insertions, 23 deletions
diff --git a/src/server/refinery.rs b/src/server/refinery.rs index bb0627f..b1af971 100644 --- a/src/server/refinery.rs +++ b/src/server/refinery.rs @@ -15,11 +15,10 @@ pub struct RefineryData { } impl ServerConnection { - pub fn server_refinery(&mut self, masses : &mut HashMap<String, Mass>) -> bool { + pub fn server_refinery(&mut self, masses : &mut HashMap<String, Mass>) { let mut ship = masses.remove(&self.name).unwrap(); let ship_clone = ship.clone(); let mut refine = false; - let mut connection_good = true; if let MassType::Ship{ref mut refinery, ..} = ship.mass_type { let mut refinery = refinery.as_mut().unwrap(); @@ -29,27 +28,10 @@ impl ServerConnection { status : refinery.status, }; - let send = serde_json::to_string(&refinery_data).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) => match recv.as_bytes() { - b"R\n" => { - if refinery_data.has_minerals { - refinery.toggle(); - } - }, - _ => { - if result == 0 { - connection_good = false; - } - }, + if self.open { + if self.txrx_refinery(&refinery_data) { + refinery.toggle(); } - Err(_error) => (), } if !refinery_data.has_minerals { @@ -68,6 +50,33 @@ impl ServerConnection { } masses.insert(self.name.clone(), ship); - connection_good + } + + fn txrx_refinery(&mut self, refinery_data : &RefineryData) -> bool { + let send = serde_json::to_string(refinery_data).unwrap() + "\n"; + match self.stream.write(send.as_bytes()) { + Err(_error) => self.open = false, + _ => (), + } + + let mut recv = String::new(); + match self.buff_r.read_line(&mut recv) { + Ok(result) => match recv.as_bytes() { + b"R\n" => { + if refinery_data.has_minerals { + return true + } + }, + _ => { + if result == 0 { + self.open = false; + } + }, + } + _ => (), + } + + false } } + |