diff options
Diffstat (limited to 'src/bin/roughenough-server.rs')
-rw-r--r-- | src/bin/roughenough-server.rs | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/src/bin/roughenough-server.rs b/src/bin/roughenough-server.rs index 4a3096c..bb20b21 100644 --- a/src/bin/roughenough-server.rs +++ b/src/bin/roughenough-server.rs @@ -25,7 +25,7 @@ extern crate log; use std::env; use std::process; -use std::sync::atomic::Ordering; +use std::sync::atomic::{Ordering, AtomicBool}; use roughenough::config; use roughenough::config::ServerConfig; @@ -33,32 +33,28 @@ use roughenough::roughenough_version; use roughenough::server::Server; use mio::Events; - -macro_rules! check_ctrlc { - ($keep_running:expr) => { - if !$keep_running.load(Ordering::Acquire) { - warn!("Ctrl-C caught, exiting..."); - return; - } - }; -} +use std::sync::Arc; +use simple_logger::SimpleLogger; +use log::LevelFilter; fn polling_loop(config: Box<dyn ServerConfig>) { let mut server = Server::new(config); + let keep_running = Arc::new(AtomicBool::new(true)); let cfg = server.get_config(); - display_config(&server, cfg); - let kr = server.get_keep_running(); - let kr0 = kr.clone(); + display_config(&server, cfg); - ctrlc::set_handler(move || kr.store(false, Ordering::Release)) + let kr_clone = keep_running.clone(); + ctrlc::set_handler(move || kr_clone.store(false, Ordering::Release)) .expect("failed setting Ctrl-C handler"); let mut events = Events::with_capacity(1024); loop { - check_ctrlc!(kr0); - if server.process_events(&mut events) { + server.process_events(&mut events); + + if !keep_running.load(Ordering::Acquire) { + warn!("Ctrl-C caught, exiting..."); return; } } |