Files
ohrwurm/src/signal.rs

22 lines
612 B
Rust

use tokio::{
select,
signal::unix::{signal, SignalKind},
sync::watch,
};
pub(crate) fn signal_handler() -> watch::Receiver<()> {
let (stop_tx, stop_rx) = watch::channel(());
tokio::spawn(async move {
let mut sigterm = signal(SignalKind::terminate()).unwrap();
let mut sigint = signal(SignalKind::interrupt()).unwrap();
loop {
select! {
_ = sigterm.recv() => println!("Receive SIGTERM"),
_ = sigint.recv() => println!("Receive SIGTERM"),
};
stop_tx.send(()).unwrap();
}
});
stop_rx
}