"stop" handling

This commit is contained in:
Jörn-Michael Miehe 2025-06-05 10:01:09 +00:00
parent e8709b79ce
commit f63f1c870e

View file

@ -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");