From 7094849bf164ff6f853c8f6812a0e831a66762f3 Mon Sep 17 00:00:00 2001 From: tom barrett Date: Thu, 14 Jun 2018 10:18:22 -0500 Subject: updated dependancies, made it so server still processes events if client connection is disconnected --- src/server/refinery.rs | 55 +++++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 23 deletions(-) (limited to 'src/server/refinery.rs') 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) -> bool { + pub fn server_refinery(&mut self, masses : &mut HashMap) { 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 } } + -- cgit v1.2.3