use std::io;
use hyper_util::rt::{TokioExecutor, TokioIo};
use hyper_util::server::conn::auto;
use tokio::net::TcpListener;
use crate::{Router, RouterService};
pub async fn internal_serve(listener: TcpListener, router: Router) -> io::Result<()> {
let service = RouterService::new(router);
loop {
let (stream, _remote) = listener.accept().await?;
let io = TokioIo::new(stream);
let service = service.clone();
tokio::spawn(async move {
if let Err(_error) = auto::Builder::new(TokioExecutor::new())
.serve_connection(io, service)
.await
{
}
});
}
}