Module shutdown

Module shutdown 

Source
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§

CancellationToken
Cancellation token for signaling shutdown
ShutdownCoordinator
Shutdown coordinator

Constants§

DEFAULT_GRACE_PERIOD_SECS
Default grace period for graceful shutdown (in seconds)