diff options
Diffstat (limited to 'src/connection.rs')
-rw-r--r-- | src/connection.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/connection.rs b/src/connection.rs index 8cf2a15..eacbb10 100644 --- a/src/connection.rs +++ b/src/connection.rs @@ -3,9 +3,13 @@ use std::io::BufReader; use std::net::TcpStream; extern crate serde_json; +extern crate erased_serde; + +use erased_serde::Deserializer; use ship::Ship; use mass::Mass; +use astroid::Astroid; use module::{Module, from_primitive}; use math::distance; @@ -101,6 +105,19 @@ impl Connection { Ok(_result) => (), Err(_error) => self.open = false, } + + let mut string_mass = String::new(); + self.buff_r.read_line(&mut string_mass).unwrap(); + if string_mass.len() > 0 { + let json = &mut serde_json::de::Deserializer::from_slice(string_mass.as_bytes()); + let mut deserialized : Box<Deserializer> = Box::new(Deserializer::erase(json)); + if string_mass.contains("Ship") { + let mass : Ship = erased_serde::deserialize(&mut deserialized).unwrap(); + } + else { + let mass : Astroid = erased_serde::deserialize(&mut deserialized).unwrap(); + } + } } } } |