Skip to main content

Crate signal_mod

Crate signal_mod 

Source
Expand description

Unified OS signal handling for Rust.

signal-mod is a runtime-agnostic substrate for cross-platform signal handling and graceful shutdown orchestration. It provides:

  • A platform-neutral Signal enum covering SIGTERM, SIGINT, SIGHUP, SIGQUIT, SIGPIPE, SIGUSR1, SIGUSR2 and their Windows console-event equivalents.
  • A Coordinator that owns the shutdown state machine and runs priority-ordered ShutdownHooks under a configurable timeout ladder.
  • Cloneable ShutdownToken (observer) and ShutdownTrigger (initiator) handles that can be passed independently through a program’s supervision tree.
  • Optional runtime adapters for tokio and async-std exposing token.wait().await.

§Quick start

use signal_mod::{Coordinator, ShutdownReason, SignalSet};
use std::time::Duration;

#[tokio::main]
async fn main() -> signal_mod::Result<()> {
    let coord = Coordinator::builder()
        .signals(SignalSet::graceful())
        .graceful_timeout(Duration::from_secs(5))
        .hook(signal_mod::hook_from_fn(
            "flush-logs",
            100,
            |reason| eprintln!("shutting down: {reason}"),
        ))
        .build();

    coord.install()?;

    let token = coord.token();
    token.wait().await;

    let reason = token.reason().unwrap_or(ShutdownReason::Requested);
    coord.run_hooks(reason);
    Ok(())
}

See .dev/DESIGN.md and REPS.md for the design contract.

Structs§

Coordinator
Owns the shutdown state machine, hook list, and (optionally) the installed signal handlers.
CoordinatorBuilder
Builder for Coordinator.
FnHook
Closure-backed ShutdownHook.
ShutdownToken
Cloneable observer handle.
ShutdownTrigger
Cloneable initiator handle.
SignalSet
A bit-packed set of Signal values.
SignalSetIter
Iterator over the signals enabled in a SignalSet.
Statistics
Snapshot of coordinator state, returned by Coordinator::statistics.

Enums§

Error
Errors produced by signal-mod operations.
ShutdownReason
Why a shutdown was initiated.
Signal
A platform-neutral signal identifier.

Constants§

VERSION
Crate version string, populated by Cargo at build time.

Traits§

ShutdownHook
A unit of cleanup work to run during shutdown.

Functions§

hook_from_fn
Convenience: wrap a closure as a ShutdownHook.

Type Aliases§

Result
Convenience alias for Result<T, signal_mod::Error>.