use tokio::signal::unix::{SignalKind, signal};
#[cfg(feature = "tracing")]
use tracing::info;
pub async fn shutdown() {
tokio::select! {
() = sig(SignalKind::interrupt(), "SIGINT") => {
std::process::exit(0);
}
() = sig(SignalKind::terminate(), "SIGTERM") => {}
};
}
async fn sig(kind: SignalKind, name: &'static str) {
signal(kind)
.expect("Failed to register signal handler")
.recv()
.await;
info!(
target: "rt::signal",
"received {}, starting shutdown",
name,
);
}