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§
- NoOp
Signal Handler - No-op signal handler for testing
- Unix
Signal Handler - Unix signal handler implementation
Traits§
- System
Signals - System signal handling trait
Functions§
- create_
signal_ handler - Create platform-specific signal handler
Type Aliases§
- Shutdown
Callback - Callback type for shutdown notification