diff --git a/src/tracker.rs b/src/tracker.rs index 048f7ae..90b98ab 100644 --- a/src/tracker.rs +++ b/src/tracker.rs @@ -88,96 +88,9 @@ impl FromWorld for Tracker { Err(_) => {} } - // match result { - // Ok(i) => i, - // _ => false - // } - - // match result { - // Message => println!("") - - // } - - - // eprintln!( - // "{:?} {:?}", - // typed_message.body.sensor, typed_message.body.pos - // ); } }); Self {} } } - -// pub fn setup_threaded_tracker_simple(mut commands: Commands) { - -// commands.spawn(Tracker::new()); - -// } - -// impl TypedBodylessHandler for Tracker { -// type Item = PoseReport; -// fn handle_typed_bodyless(&mut self, header: &vrpn::MessageHeader) -> Result { - -// Ok(HandlerCode::ContinueProcessing) -// } -// } - -// impl TypedHandler for Tracker { -// type Item = PoseReport; -// fn handle_typed(&mut self, msg: &Message) -> Result { -// println!("{:?}\n {:?}", msg.header, msg.body); -// Ok(HandlerCode::ContinueProcessing) -// } -// } - -#[derive(Debug)] -struct TrackerHandler; -impl TypedHandler for TrackerHandler { - type Item = PoseReport; - fn handle_typed(&mut self, msg: &Message) -> Result { - println!("{:?}\n {:?}", msg.header, msg.body); - Ok(HandlerCode::ContinueProcessing) - } -} - -pub fn setup_threaded_tracker(mut commands: Commands) { - // let (tx, rx) = bounded::(10); - std::thread::spawn(move || { - let addr: SocketAddr = "127.0.0.1:3883".parse().unwrap(); - 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)).unwrap(); - let cookie_buf = read_cookie(&mut stream).unwrap(); - let mut cookie_buf = Bytes::from(&cookie_buf[..]); - - CookieData::unbuffer_ref(&mut cookie_buf) - .and_then(|msg| check_ver_nonfile_compatible(msg.version)) - .unwrap(); - - let mut endpoint = EndpointSyncTcp::new(stream); - let mut dispatcher = TypeDispatcher::new(); - - let _ = dispatcher - .add_typed_handler(Box::new(TrackerHandler {}), None) - .unwrap(); - - // setup a channel - // let (tx, rx) = mpsc::channel(); - - loop { - // vrpn implementation is rather verbose - we need to see what specific errors - // should be handled properly! - endpoint - .poll_endpoint(&mut dispatcher) - .unwrap_or_else(|err| { - info!("error from tracker thread {:?}", err); - }) - - // dispatcher.han - } - }); -}