use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::Arc;
#[derive(Debug, Clone, Default)]
pub struct CancelFlag {
inner: Arc<AtomicBool>,
}
impl CancelFlag {
pub fn new() -> Self {
Self {
inner: Arc::new(AtomicBool::new(false)),
}
}
pub fn cancel(&self) {
self.inner.store(true, Ordering::SeqCst);
}
pub fn is_cancelled(&self) -> bool {
self.inner.load(Ordering::SeqCst)
}
pub fn reset(&self) {
self.inner.store(false, Ordering::SeqCst);
}
pub fn clone_arc(&self) -> Arc<AtomicBool> {
Arc::clone(&self.inner)
}
}