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 2ae9f38
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 7 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
39 changes: 32 additions & 7 deletions examples/graceful-shutdown/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use salvo_core::prelude::*;
use salvo::prelude::*;
use salvo::server::ServerHandle;
use tokio::signal;

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

// Listen Shutdown Signal
listen_shutdown_signal(handle);
tokio::spawn(listen_shutdown_signal(handle));

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

async fn listen_shutdown_signal(handle: ServerHandle) {
// Wait Shutdown Signal
tokio::spawn(async move {
let _ = signal::ctrl_c().await;
// Graceful Shutdown Server
handle.stop_graceful(None);
})
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 => println!("ctrl_c signal received"),
_ = terminate => println!("terminate signal received"),
};

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

0 comments on commit 2ae9f38

Please sign in to comment.