summaryrefslogtreecommitdiff
path: root/src/connection.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/connection.rs')
-rw-r--r--src/connection.rs17
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();
+ }
+ }
}
}
}