From cef128d1efc55e17d5e94c62a61797de17438ae5 Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Fri, 30 Dec 2022 14:09:24 -0600 Subject: [PATCH] main: Add wait_signal function Moving the signal handler setup and wait to a separate function will allow us to eventually create platform-specific implementations. Windows doesn't have SIGINT/SIGTERM, so we will need different logic if we ever want to support that OS. --- src/main.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 2f2b86d..b075c13 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,18 +21,23 @@ async fn main() { config::load_config(std::env::var("MQTTMARIONETTE_CONFIG").ok()) .unwrap(); - let mut sig_term = unix::signal(SignalKind::terminate()).unwrap(); - let mut sig_int = unix::signal(SignalKind::interrupt()).unwrap(); - let task = tokio::spawn(async move { let session = Session::begin(config).await.unwrap(); session.run().await; }); + wait_signal().await; + + task.abort(); +} + +#[cfg(unix)] +async fn wait_signal() { + let mut sig_term = unix::signal(SignalKind::terminate()).unwrap(); + let mut sig_int = unix::signal(SignalKind::interrupt()).unwrap(); + tokio::select! { _ = sig_term.recv() => info!("Received SIGTERM"), _ = sig_int.recv() => info!("Received SIGINT"), }; - - task.abort(); }