From f63f1c870ef0fbc2d2a099925f10fcbdd9f636ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn-Michael=20Miehe?= <40151420+ldericher@users.noreply.github.com> Date: Thu, 5 Jun 2025 10:01:09 +0000 Subject: [PATCH] "stop" handling --- src/main.rs | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/main.rs b/src/main.rs index ddb38a1..b1dcc6b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,11 +18,14 @@ use appstate::AppState; use cli::Cli; fn main() { - let running = Arc::new(AtomicBool::new(true)); - let r = running.clone(); + let stop = Arc::new(AtomicBool::new(false)); - ctrlc::set_handler(move || r.store(false, Ordering::SeqCst)) - .expect("Error setting Ctrl-C handler"); + let stop_ctrlc = stop.clone(); + ctrlc::set_handler(move || { + stop_ctrlc.store(true, Ordering::SeqCst); + info!("stopping after chunk ..."); + }) + .expect("Error setting Ctrl-C handler"); env_logger::init(); @@ -36,10 +39,7 @@ fn main() { .into(); let mut state = match AppState::try_resume(&args) { - Some(state) => { - info!("loaded state: {state:?}"); - state - } + Some(state) => state, None => AppState::from_args(&args, &agent).unwrap_or_else(|e| { error!("could not create new state: {e}"); exit(1); @@ -58,10 +58,7 @@ fn main() { state.save().unwrap(); - if !running.load(Ordering::SeqCst) { - info!("terminating ..."); - exit(0); - } + stop.load(Ordering::SeqCst).then(|| exit(0)); } info!("uploads done");