index : static-web-server.git

ascending towards madness

author Jose Quintana <joseluisquintana20@gmail.com> 2021-04-27 14:08:58.0 +00:00:00
committer Jose Quintana <joseluisquintana20@gmail.com> 2021-04-27 14:08:58.0 +00:00:00
commit
3018b4ac23ee49eed8c31378348dfacd67c53cd8 [patch]
tree
28467f40c709fd50df74062acdbbc7a8f84895a7
parent
a1969362f9b90a88b24e7a78fc6262a0b79e881a
download
3018b4ac23ee49eed8c31378348dfacd67c53cd8.tar.gz

refactor: specify unix-like target os for signals handling



Diff

 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,