summaryrefslogtreecommitdiff
path: root/vendor/hyper-util/examples/server_graceful.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/hyper-util/examples/server_graceful.rs')
-rw-r--r--vendor/hyper-util/examples/server_graceful.rs64
1 files changed, 0 insertions, 64 deletions
diff --git a/vendor/hyper-util/examples/server_graceful.rs b/vendor/hyper-util/examples/server_graceful.rs
deleted file mode 100644
index bfb43a4b..00000000
--- a/vendor/hyper-util/examples/server_graceful.rs
+++ /dev/null
@@ -1,64 +0,0 @@
-use bytes::Bytes;
-use std::convert::Infallible;
-use std::pin::pin;
-use std::time::Duration;
-use tokio::net::TcpListener;
-
-#[tokio::main(flavor = "current_thread")]
-async fn main() -> Result<(), Box<dyn std::error::Error>> {
- let listener = TcpListener::bind("127.0.0.1:8080").await?;
-
- let server = hyper_util::server::conn::auto::Builder::new(hyper_util::rt::TokioExecutor::new());
- let graceful = hyper_util::server::graceful::GracefulShutdown::new();
- let mut ctrl_c = pin!(tokio::signal::ctrl_c());
-
- loop {
- tokio::select! {
- conn = listener.accept() => {
- let (stream, peer_addr) = match conn {
- Ok(conn) => conn,
- Err(e) => {
- eprintln!("accept error: {}", e);
- tokio::time::sleep(Duration::from_secs(1)).await;
- continue;
- }
- };
- eprintln!("incomming connection accepted: {}", peer_addr);
-
- let stream = hyper_util::rt::TokioIo::new(Box::pin(stream));
-
- let conn = server.serve_connection_with_upgrades(stream, hyper::service::service_fn(|_| async move {
- tokio::time::sleep(Duration::from_secs(5)).await; // emulate slow request
- let body = http_body_util::Full::<Bytes>::from("Hello World!".to_owned());
- Ok::<_, Infallible>(http::Response::new(body))
- }));
-
- let conn = graceful.watch(conn.into_owned());
-
- tokio::spawn(async move {
- if let Err(err) = conn.await {
- eprintln!("connection error: {}", err);
- }
- eprintln!("connection dropped: {}", peer_addr);
- });
- },
-
- _ = ctrl_c.as_mut() => {
- drop(listener);
- eprintln!("Ctrl-C received, starting shutdown");
- break;
- }
- }
- }
-
- tokio::select! {
- _ = graceful.shutdown() => {
- eprintln!("Gracefully shutdown!");
- },
- _ = tokio::time::sleep(Duration::from_secs(10)) => {
- eprintln!("Waited 10 seconds for graceful shutdown, aborting...");
- }
- }
-
- Ok(())
-}