jupiter_rs/
signals.rs

1use std::sync::Arc;
2
3use log::info;
4use tokio::signal::unix::SignalKind;
5
6use crate::platform::Platform;
7
8pub fn install(platform: Arc<Platform>) {
9    tokio::spawn(async move {
10        let ctrl_c = tokio::signal::ctrl_c();
11        let mut sig_hup = tokio::signal::unix::signal(SignalKind::hangup()).unwrap();
12
13        tokio::select! {
14            _ = ctrl_c => {
15                info!("Received CTRL-C. Shutting down...");
16                platform.terminate();
17            },
18            _ = sig_hup.recv() => {
19                info!("Received SIGHUP. Shutting down...");
20                platform.terminate();
21            }
22        }
23    });
24}