wip: waiter

This commit is contained in:
2023-11-21 13:19:04 +11:00
parent 97ab962ae2
commit 14066e19b6
8 changed files with 83 additions and 35 deletions

View File

@@ -0,0 +1,31 @@
use std::error;
use tokio::signal::unix::{signal, SignalKind};
use tokio::select;
use tokio::sync::watch::Sender;
pub async fn sighandler(s: Sender<i32>) -> Result<(), Box<dyn error::Error + Send + Sync>> {
let mut sigint = signal(SignalKind::interrupt())?;
let mut sigterm = signal(SignalKind::terminate())?;
let mut sigchld = signal(SignalKind::child())?;
'signal: loop {
select! {
_ = sigint.recv() => {
println!("got SIGINT");
drop(s);
break 'signal;
},
_ = sigterm.recv() => {
println!("got SIGTERM");
drop(s);
break 'signal;
},
_ = sigchld.recv() => {
// do nothing intentionally
// return Err(())
},
}
}
Ok(())
}