use crate::error::{ReactionError, Result};
use crate::raw_input::common::{RawInputData, RawInputProvider};
#[derive(Default)]
pub struct LinuxRawInput {
initialized: bool,
queue: Vec<RawInputData>,
}
impl LinuxRawInput {
pub fn new() -> Self {
Self {
initialized: false,
queue: Vec::new(),
}
}
pub fn simulate_data(&mut self, data: RawInputData) {
self.queue.push(data);
}
}
impl RawInputProvider for LinuxRawInput {
fn initialize(&mut self) -> Result<()> {
self.initialized = true;
Ok(())
}
fn poll(&mut self) -> Result<Option<RawInputData>> {
if !self.initialized {
return Err(ReactionError::RawInputError(
"LinuxRawInput not initialized".into(),
));
}
Ok(self.queue.pop())
}
fn shutdown(&mut self) -> Result<()> {
self.initialized = false;
self.queue.clear();
Ok(())
}
}