Skip to content

Commit

Permalink
fix: salvo-core to salvo
Browse files Browse the repository at this point in the history
  • Loading branch information
Hujian99 committed Jan 19, 2024
1 parent e59963d commit 1525cc7
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 4 deletions.
1 change: 1 addition & 0 deletions examples/graceful-shutdown/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ version.workspace = true
edition.workspace = true
publish.workspace = true


[dependencies]
salvo = { workspace = true }
tokio = { workspace = true, features = ["macros", "signal"] }
Expand Down
36 changes: 32 additions & 4 deletions examples/graceful-shutdown/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
use salvo_core::prelude::*;
use salvo::prelude::*;
use salvo::server::ServerHandle;
use tracing::info;
use tokio::signal;

#[tokio::main]
Expand All @@ -8,16 +10,42 @@ async fn main() {
let handle = server.handle();

// Listen Shutdown Signal
listen_shutdown_signal(handle);
listen_shutdown_signal(handle).await;

server.serve(Router::new()).await;
}

async fn listen_shutdown_signal(handle: ServerHandle) {
// Wait Shutdown Signal
tokio::spawn(async move {
let _ = signal::ctrl_c().await;
let ctrl_c = async {
signal::ctrl_c()
.await
.expect("failed to install Ctrl+C handler");
};

#[cfg(unix)]
let terminate = async {
signal::unix::signal(signal::unix::SignalKind::terminate())
.expect("failed to install signal handler")
.recv()
.await;
};

#[cfg(windows)]
let terminate = async {
signal::windows::signal(signal::windows::Signal::ctrl_c())
.expect("failed to install signal handler")
.recv()
.await;
};

tokio::select! {
_ = ctrl_c => info!("ctrl_c signal received"),
_ = terminate => info!("terminate signal received"),
};

// Graceful Shutdown Server
handle.stop_graceful(None);
})
});
}

0 comments on commit 1525cc7

Please sign in to comment.