outbox_pattern_processor/
shutdown.rs1use tokio::signal;
2use tracing::log::info;
3
4pub struct Shutdown;
5
6impl Shutdown {
7 pub async fn signal(message: &str) {
8 let ctrl_c = async {
9 signal::ctrl_c().await.expect("Failed to install Ctrl+C handler");
10 };
11
12 let terminate = async {
13 signal::unix::signal(signal::unix::SignalKind::terminate())
14 .expect("Failed to install signal handler")
15 .recv()
16 .await;
17 };
18
19 tokio::select! {
20 _ = ctrl_c => {},
21 _ = terminate => {},
22 }
23
24 info!("{message}");
25 }
26}