27 lines
940 B
Rust
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))
|
|
}
|