tuwunel_router/serve/
plain.rs1use std::net::{SocketAddr, TcpListener};
2
3use axum::Router;
4use axum_server::{Handle, from_tcp};
5use futures::{FutureExt, future::BoxFuture};
6use tuwunel_core::Result;
7
8pub(super) fn serve<'a>(
9 router: &Router,
10 handle: &Handle<SocketAddr>,
11 listeners: impl Iterator<Item = TcpListener>,
12) -> Result<Vec<BoxFuture<'a, Result<(), std::io::Error>>>> {
13 let router = router
14 .clone()
15 .into_make_service_with_connect_info::<SocketAddr>();
16
17 listeners
18 .map(|listener| {
19 let acceptor = from_tcp(listener)?
20 .handle(handle.clone())
21 .serve(router.clone())
22 .boxed();
23
24 Ok(acceptor)
25 })
26 .collect()
27}