diff --git a/src/engine/device_thread.rs b/src/engine/device_thread.rs index d643dff..77ded0c 100644 --- a/src/engine/device_thread.rs +++ b/src/engine/device_thread.rs @@ -1,9 +1,11 @@ use std::{marker::PhantomData, sync::Arc}; +use super::SPACE_BEFORE; use super::shared::SharedData; use crate::{ device::Device, - util::{Time, TimeSource} + error::Error, + util::{MsgBuffer, Time, TimeSource} }; @@ -21,8 +23,24 @@ impl DeviceThread { // TODO sync } + fn read_device_packet(&mut self, buffer: &mut MsgBuffer) -> Result<(), Error> { + // TODO: read data + // use 5sec timeout + unimplemented!(); + } + + fn forward_packet(&mut self, buffer: &mut MsgBuffer) -> Result<(), Error> { + // TODO: handle data + unimplemented!(); + } + pub fn run(mut self) { + let mut buffer = MsgBuffer::new(SPACE_BEFORE); loop { + try_fail!(self.read_device_packet(&mut buffer), "Failed to read from device: {}"); + if let Err(e) = self.forward_packet(&mut buffer) { + error!("{}", e); + } let now = T::now(); if self.next_sync < now { self.sync(); diff --git a/src/engine/socket_thread.rs b/src/engine/socket_thread.rs index 4939993..42faa62 100644 --- a/src/engine/socket_thread.rs +++ b/src/engine/socket_thread.rs @@ -1,9 +1,11 @@ -use std::marker::PhantomData; -use std::sync::Arc; +use crate::error::Error; +use std::{marker::PhantomData, net::SocketAddr, sync::Arc}; -use super::shared::SharedData; -use crate::net::Socket; -use crate::util::{Time, TimeSource}; +use super::{shared::SharedData, SPACE_BEFORE}; +use crate::{ + net::Socket, + util::{MsgBuffer, Time, TimeSource} +}; const SYNC_INTERVAL: Time = 1; @@ -17,11 +19,28 @@ pub struct SocketThread { impl SocketThread { fn sync(&mut self) { - //TODO sync - } + // TODO: sync + unimplemented!(); + } + + fn read_socket_data(&mut self, buffer: &mut MsgBuffer) -> Result { + // TODO: read data + // use 5sec timeout + unimplemented!(); + } + + fn handle_message(&mut self, src: SocketAddr, buffer: &mut MsgBuffer) -> Result<(), Error> { + // TODO: handle data + unimplemented!(); + } pub fn run(mut self) { + let mut buffer = MsgBuffer::new(SPACE_BEFORE); loop { + let addr = try_fail!(self.read_socket_data(&mut buffer), "Failed to read from socket: {}"); + if let Err(e) = self.handle_message(addr, &mut buffer) { + error!("{}", e); + } let now = T::now(); if self.next_sync < now { self.sync(); @@ -29,4 +48,4 @@ impl SocketThread { } } } -} \ No newline at end of file +}