From 6fb01a0cb228b1aa08e47e8dbcd6b46c43bde06b Mon Sep 17 00:00:00 2001 From: tom barrett Date: Tue, 20 Feb 2018 09:51:10 -0600 Subject: -starting out --- src/connection.rs | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/connection.rs (limited to 'src/connection.rs') diff --git a/src/connection.rs b/src/connection.rs new file mode 100644 index 0000000..0276558 --- /dev/null +++ b/src/connection.rs @@ -0,0 +1,56 @@ +use std::io::prelude::*; +use std::io::BufReader; +use std::net::{TcpListener, TcpStream}; + +extern crate serde_json; + +use ship::Ship; +use module::{Module, from_primitive}; + +pub struct Connection { + name : String, + ship : Ship, + module : Module, + stream : TcpStream, + buff_r : BufReader, + pub open : bool, +} + +impl Connection { + pub fn new(mut stream : TcpStream) -> Connection { + let mut buff_r = BufReader::new(stream.try_clone().unwrap()); + + let mut data = String::new(); + buff_r.read_line(&mut data); + let name = &data[..data.find(":").unwrap()]; + + let modules = b"dashboard,navigation,engine\n"; + stream.write(modules); + + let mut data = String::new(); + buff_r.read_line(&mut data); + let num = data.replace("\n", ""); + let module = from_primitive(num.parse::().unwrap()); + + Connection { + name : String::from(name), + ship : Ship::new(), + module : module, + stream : stream, + buff_r : buff_r, + open : true, + } + } + + pub fn process(&mut self) { + match self.module { + Module::Dashboard => { + let mut send = serde_json::to_string(&self.ship).unwrap(); + send.push_str("\n"); + self.stream.write(send.as_bytes()); + } + _ => () + } + } +} + -- cgit v1.2.3