use std::time::Duration; use axum::routing::get; use axum::Router; use employees::{Shutdown, Worker}; /* ---------- */ pub(crate) struct HttpServer; impl Worker for HttpServer { fn run(&mut self, shutdown: Shutdown) { let runtime = tokio::runtime::Runtime::new().expect("failed to build the http server runtime"); runtime.block_on(async { let app = Router::new().route("/", get(|| async { "Bonjour, Monde !" })); axum::Server::bind( &"0.0.0.0:23456" .parse() .expect("invalid http server endpoint"), ) .serve(app.into_make_service()) .with_graceful_shutdown(async { while shutdown.is_running() { tokio::time::sleep(Duration::from_millis(100)).await; } }) .await .expect("http server returned with an error") }); } }