From 3018b4ac23ee49eed8c31378348dfacd67c53cd8 Mon Sep 17 00:00:00 2001 From: Jose Quintana Date: Tue, 27 Apr 2021 16:08:58 +0200 Subject: [PATCH] refactor: specify unix-like target os for signals handling --- src/server.rs | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/server.rs b/src/server.rs index 57dcbaf..90c69e2 100644 --- a/src/server.rs +++ b/src/server.rs @@ -4,7 +4,7 @@ use structopt::StructOpt; use warp::Filter; use crate::config::{Config, CONFIG}; -use crate::{cache, cors, filters, helpers, logger, rejection, signals, Result}; +use crate::{cache, cors, filters, helpers, logger, rejection, Result}; /// Define a multi-thread HTTP or HTTP/2 web server. pub struct Server { @@ -119,19 +119,29 @@ impl Server { .await }); - // Handle incoming signals for Unix-like OS's only - // TODO: make this more explicit like v1 - // see https://github.com/joseluisq/static-web-server/blob/1.x/src/server.rs#L96 - signals::wait(|sig: signals::Signal| { - let code = signals::as_int(sig); - tracing::warn!("Signal {} caught. Server execution exited.", code); - std::process::exit(code) - }); + handle_signals(); Ok(()) } } +#[cfg(not(windows))] +/// Handle incoming signals for Unix-like OS's only +fn handle_signals() { + use crate::signals; + + signals::wait(|sig: signals::Signal| { + let code = signals::as_int(sig); + tracing::warn!("Signal {} caught. Server execution exited.", code); + std::process::exit(code) + }); +} + +#[cfg(windows)] +fn handle_signals() { + // TODO: Windows signals... +} + /// It creates and starts a Warp HTTP or HTTP/2 server with Brotli compression. pub async fn run_server_with_brotli_compression( addr: SocketAddr, -- libgit2 1.7.2