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}