Files
zesdex/crates/zesdex-backend/src/app/util/abort.rs
T

27 lines
940 B
Rust

//! Shared abort-flag checks.
//!
//! The two variants (Option<Arc<AtomicBool>> and bare AtomicBool) are
//! used across the agent runtime, subagent, workflow engine, and provider.
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::Arc;
/// Check whether an optional abort flag has been signalled.
pub fn is_aborted(flag: &Option<Arc<AtomicBool>>) -> bool {
flag.as_ref().is_some_and(|f| f.load(Ordering::SeqCst))
}
/// Check whether a bare abort flag has been signalled.
pub fn is_aborted_direct(flag: &AtomicBool) -> bool {
flag.load(Ordering::SeqCst)
}
/// Check whether an optional borrowed abort flag has been signalled.
///
/// This variant handles the `Option<&AtomicBool>` pattern used in
/// service/provider.rs where the flag is passed as a by-value optional
/// reference rather than an `Arc`.
pub fn is_aborted_ref(flag: Option<&AtomicBool>) -> bool {
flag.is_some_and(|f| f.load(Ordering::SeqCst))
}