outbox_pattern_processor/shutdown.rs
use tokio::signal;
use tracing::log::info;
pub struct Shutdown;
impl Shutdown {
pub async fn signal(message: &str) {
let ctrl_c = async {
signal::ctrl_c().await.expect("Failed to install Ctrl+C handler");
};
let terminate = async {
signal::unix::signal(signal::unix::SignalKind::terminate())
.expect("Failed to install signal handler")
.recv()
.await;
};
tokio::select! {
_ = ctrl_c => {},
_ = terminate => {},
}
info!("{message}");
}
}