Module signals

Module signals 

Source
Expand description

§System Signal Handling

Cross-platform signal handling for graceful shutdown.

§Supported Signals

  • SIGTERM (15) - Graceful shutdown request
  • SIGINT (2) - User interrupt (Ctrl+C)
  • SIGHUP (1) - Hangup (terminal closed)

§Design Pattern

The signal handler provides:

  • Async signal handling via tokio
  • Trait abstraction for testing
  • Callback-based shutdown initiation
  • Platform-specific implementations (Unix vs Windows)

§Usage

use adaptive_pipeline_bootstrap::signals::{SystemSignals, UnixSignalHandler};
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::Arc;

#[tokio::main]
async fn main() {
    let shutdown_flag = Arc::new(AtomicBool::new(false));
    let flag_clone = shutdown_flag.clone();

    let signal_handler = UnixSignalHandler::new();

    // Install signal handlers
    tokio::spawn(async move {
        let callback = Box::new(move || {
            flag_clone.store(true, Ordering::SeqCst);
        });
        signal_handler.wait_for_signal(callback).await;
    });

    // Main application loop
    while !shutdown_flag.load(Ordering::SeqCst) {
        // Application work...
        tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
    }
}

Structs§

NoOpSignalHandler
No-op signal handler for testing
UnixSignalHandler
Unix signal handler implementation

Traits§

SystemSignals
System signal handling trait

Functions§

create_signal_handler
Create platform-specific signal handler

Type Aliases§

ShutdownCallback
Callback type for shutdown notification