diff --git a/src/debug_server.rs b/src/debug_server.rs index 82ff745..5b50c57 100644 --- a/src/debug_server.rs +++ b/src/debug_server.rs @@ -1,3 +1,5 @@ +use futures::Future; +use hyper::rt::Executor; use hyper::service::{make_service_fn, service_fn}; use hyper::{Body, Response, Server}; use std::convert::Infallible; @@ -6,21 +8,32 @@ use std::sync::Arc; use tokio::sync::Mutex; use crate::ports::PortHandler; +use crate::spawn; + +#[derive(Clone)] +struct NamedExecutor; +impl + Send + 'static> Executor for NamedExecutor { + fn execute(&self, fut: Fut) { + spawn("http worker", fut); + } +} pub async fn debug_server(addr: SocketAddr, port_handler: Arc>) { - let server = Server::bind(&addr).serve(make_service_fn(move |_conn| { - let port_handler = port_handler.clone(); - async move { - Ok::<_, Infallible>(service_fn(move |_req| { - let port_handler = port_handler.clone(); - async move { - Ok::<_, Infallible>(Response::new(Body::from( - port_handler.lock().await.status_string(), - ))) - } - })) - } - })); + let server = Server::bind(&addr) + .executor(NamedExecutor) + .serve(make_service_fn(move |_conn| { + let port_handler = port_handler.clone(); + async move { + Ok::<_, Infallible>(service_fn(move |_req| { + let port_handler = port_handler.clone(); + async move { + Ok::<_, Infallible>(Response::new(Body::from( + port_handler.lock().await.status_string(), + ))) + } + })) + } + })); // Run this server for... forever! if let Err(e) = server.await {