diff options
Diffstat (limited to 'src/util')
| -rw-r--r-- | src/util/event.rs | 73 | ||||
| -rw-r--r-- | src/util/mod.rs | 1 | 
2 files changed, 0 insertions, 74 deletions
| diff --git a/src/util/event.rs b/src/util/event.rs deleted file mode 100644 index 379df99..0000000 --- a/src/util/event.rs +++ /dev/null @@ -1,73 +0,0 @@ -use std::io; -use std::sync::mpsc; -use std::thread; -use std::time::Duration; - -use termion::event::Key; -use termion::input::TermRead; - -pub enum Event<I> { -    Input(I), -    Tick, -} - -/// A small event handler that wrap termion input and tick events. Each event -/// type is handled in its own thread and returned to a common `Receiver` -pub struct Events { -    rx: mpsc::Receiver<Event<Key>>, -    input_handle: thread::JoinHandle<()>, -    tick_handle: thread::JoinHandle<()>, -} - -#[derive(Debug, Clone, Copy)] -pub struct Config { -    pub tick_rate: Duration, -} - -impl Default for Config { -    fn default() -> Config { -        Config { -            tick_rate: Duration::from_millis(250), -        } -    } -} - -impl Events { -    pub fn new() -> Events { -        Events::with_config(Config::default()) -    } - -    pub fn with_config(config: Config) -> Events { -        let (tx, rx) = mpsc::channel(); -        let input_handle = { -            let tx = tx.clone(); -            thread::spawn(move || { -                let stdin = io::stdin(); -                for key in stdin.keys().flatten() { -                    if let Err(err) = tx.send(Event::Input(key)) { -                        eprintln!("{err}"); -                        return; -                    } -                } -            }) -        }; -        let tick_handle = { -            thread::spawn(move || loop { -                if let Err(err) = tx.send(Event::Tick) { -                    eprintln!("{err}"); -                    break; -                } -                thread::sleep(config.tick_rate); -            }) -        }; -        Events { -            rx, -            input_handle, -            tick_handle, -        } -    } - -    pub fn next(&self) -> Result<Event<Key>, mpsc::RecvError> { -        self.rx.recv() -    } -} diff --git a/src/util/mod.rs b/src/util/mod.rs index c866e61..3444389 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -1,4 +1,3 @@  #[allow(dead_code)] -pub mod event;  pub mod serialization;  pub mod time; | 
