Expand description
A crate designed to provide a more user friendly interface to
tokio::signal
.
See the changelog for a full release history.
§Feature flags
bootstrap
— Enables scuffle-bootstrap supportdocs
— Enables changelog and documentation of feature flags
§Why do we need this?
The tokio::signal
module provides a way for us to wait for a signal to be
received in a non-blocking way. This crate extends that with a more helpful
interface allowing the ability to listen to multiple signals concurrently.
§Example
use scuffle_signal::SignalHandler;
use tokio::signal::unix::SignalKind;
let mut handler = SignalHandler::new()
.with_signal(SignalKind::interrupt())
.with_signal(SignalKind::terminate());
// Wait for a signal to be received
let signal = handler.await;
// Handle the signal
let interrupt = SignalKind::interrupt();
let terminate = SignalKind::terminate();
match signal {
interrupt => {
// Handle SIGINT
println!("received SIGINT");
},
terminate => {
// Handle SIGTERM
println!("received SIGTERM");
},
}
§License
This project is licensed under the MIT or Apache-2.0 license. You can choose between one of them if you use this work.
SPDX-License-Identifier: MIT OR Apache-2.0
Modules§
- changelog
- Changelogs generated by scuffle_changelog
Traits§
- Signal
Config bootstrap
- Configuration for the signal service.
Structs§
- Signal
Svc bootstrap
- A [
Service
] that listens for signals and cancels the context when a signal is received.
Enums§
- Signal
Kind - The type of signal to listen for.
Structs§
- Signal
Handler - A handler for listening to multiple signals, and providing a future for receiving them.
- Unix
Signal Kind Unix - Represents the specific kind of signal to listen for.