outbox_pattern_processor/
shutdown.rs

1use 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}