use server_framework::Server; use port_input_device::InputDevice; use crate::protocol::{InputRequest, InputResponse}; pub struct InputServer { device: D, } impl InputServer { pub fn new(device: D) -> Self { Self { device } } pub fn device(&self) -> &D { &self.device } } impl Server for InputServer { type Request = InputRequest; type Response = InputResponse; fn handle(&mut self, request: InputRequest) -> InputResponse { match request { InputRequest::PollEvent => match self.device.poll() { Some(event) => InputResponse::Event(event), None => InputResponse::NoEvent, }, InputRequest::WaitEvent => match self.device.poll() { Some(event) => InputResponse::Event(event), None => InputResponse::NoEvent, }, } } }