diff --git a/src/tracker.rs b/src/tracker.rs index 1419fa9..72ccce7 100644 --- a/src/tracker.rs +++ b/src/tracker.rs @@ -18,6 +18,8 @@ use vrpn::{ #[derive(Component)] pub struct Tracker { + endpoint: EndpointSyncTcp, + dispatcher: TypeDispatcher // stream: ConnectionIpStream, // connection: Arc } @@ -34,7 +36,7 @@ impl TypedHandler for TrackerHandler { } impl Tracker { - pub fn from_info(server_ip: &str, port: u16) -> Result<()> { + pub fn from_info(server_ip: &str, port: u16) -> Self { // let server = format!("tcp://{}:{}", server_ip, port) // .parse::() // .unwrap(); @@ -50,12 +52,12 @@ impl Tracker { let addr: SocketAddr = "127.0.0.1:3883".parse().unwrap(); - let mut stream = TcpStream::connect(addr)?; - stream.set_nodelay(true)?; + let mut stream = TcpStream::connect(addr).unwrap(); + stream.set_nodelay(true).unwrap(); // We first write our cookie, then read and check the server's cookie, before the loop. - write_cookie(&mut stream, CookieData::from(MAGIC_DATA))?; - let cookie_buf = read_cookie(&mut stream)?; + write_cookie(&mut stream, CookieData::from(MAGIC_DATA)).unwrap(); + let cookie_buf = read_cookie(&mut stream).unwrap(); let mut cookie_buf = Bytes::from(&cookie_buf[..]); // CookieData::unbuffer_ref(&mut cookie_buf) @@ -63,14 +65,18 @@ impl Tracker { let mut endpoint = EndpointSyncTcp::new(stream); let mut dispatcher = TypeDispatcher::new(); - let _ = dispatcher.add_typed_handler(Box::new(TrackerHandler {}), None)?; + let _ = dispatcher.add_typed_handler(Box::new(TrackerHandler {}), None).unwrap(); + + Tracker { + endpoint, + dispatcher + } - // Ok(Self { - // // stream: ConnectionIpStream::new(Arc::clone(&connection)), - // // connection - // }) } + fn update(&self) { + self.endpoint.poll_endpoint(&mut self.dispatcher).unwrap(); + } } @@ -84,6 +90,8 @@ pub fn update_tracker(mut query:Query<&mut Tracker>) { for mut tracker in query.iter_mut() { + // tracker.update(); + // tracker.connection.poll_endpoints(); // tracker }