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