Expand description
§Shutdown Coordination
Manages graceful shutdown across application components.
§Design Pattern
The shutdown coordinator provides:
- Cancellation tokens for propagating shutdown signals
- Grace period with timeout enforcement
- Atomic state for shutdown tracking
- Async-aware shutdown orchestration
§Usage
use adaptive_pipeline_bootstrap::shutdown::ShutdownCoordinator;
use std::time::Duration;
#[tokio::main]
async fn main() {
let coordinator = ShutdownCoordinator::new(Duration::from_secs(5));
// Clone token for worker tasks
let token = coordinator.token();
// Spawn worker
tokio::spawn(async move {
loop {
tokio::select! {
_ = token.cancelled() => {
println!("Worker shutting down gracefully");
break;
}
_ = tokio::time::sleep(Duration::from_secs(1)) => {
println!("Working...");
}
}
}
});
// Later: initiate shutdown
coordinator.initiate_shutdown();
coordinator.wait_for_shutdown().await;
}Structs§
- Cancellation
Token - Cancellation token for signaling shutdown
- Shutdown
Coordinator - Shutdown coordinator
Constants§
- DEFAULT_
GRACE_ PERIOD_ SECS - Default grace period for graceful shutdown (in seconds)