use std::{
process::ExitCode,
sync::{
Arc,
atomic::{AtomicU8, Ordering},
},
};
use log::info;
#[derive(Clone)]
pub struct RunningTracker {
exit_code: Arc<AtomicU8>,
}
impl RunningTracker {
pub fn new() -> Self {
Self { exit_code: Arc::new(AtomicU8::new(0)) }
}
pub fn quit_with_code(&self, code: u8, reason: &str) {
self.exit_code.store(code, Ordering::Release);
info!("Quit with code {code}: {reason}");
}
pub fn exit_code(&self) -> ExitCode {
ExitCode::from(self.exit_code.load(Ordering::Acquire))
}
}