mirror of
https://github.com/veeso/termscp.git
synced 2025-12-07 09:36:00 -08:00
Read one event fn
This commit is contained in:
@@ -48,24 +48,37 @@ impl InputHandler {
|
|||||||
pub(crate) fn fetch_events(&self) -> Result<Vec<Event>, ()> {
|
pub(crate) fn fetch_events(&self) -> Result<Vec<Event>, ()> {
|
||||||
let mut inbox: Vec<Event> = Vec::new();
|
let mut inbox: Vec<Event> = Vec::new();
|
||||||
loop {
|
loop {
|
||||||
if let Ok(available) = poll(Duration::from_millis(10)) {
|
match self.read_event() {
|
||||||
match available {
|
Ok(ev_opt) => match ev_opt {
|
||||||
true => {
|
Some(ev) => inbox.push(ev),
|
||||||
// Read event
|
None => break
|
||||||
if let Ok(ev) = read() {
|
},
|
||||||
inbox.push(ev);
|
Err(_) => return Err(())
|
||||||
} else {
|
|
||||||
return Err(());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
false => break,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return Err(());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(inbox)
|
Ok(inbox)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// ### read_event
|
||||||
|
///
|
||||||
|
/// Read event from input listener
|
||||||
|
pub(crate) fn read_event(&self) -> Result<Option<Event>, ()> {
|
||||||
|
if let Ok(available) = poll(Duration::from_millis(10)) {
|
||||||
|
match available {
|
||||||
|
true => {
|
||||||
|
// Read event
|
||||||
|
if let Ok(ev) = read() {
|
||||||
|
Ok(Some(ev))
|
||||||
|
} else {
|
||||||
|
Err(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
false => Ok(None)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Err(())
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|||||||
Reference in New Issue
Block a user