use std::{net::SocketAddr, sync::Arc};
use crate::{CertLoader, LoadCert, Result, Route};
mod h1;
mod h2;
mod h3;
pub async fn srv<D: LoadCert>(
route: Arc<Route>,
cert_loader: Arc<CertLoader<D>>,
h1_addr: SocketAddr,
h2_addr: SocketAddr,
h3_addr: SocketAddr,
) -> Result<()> {
let h1_srv = h1::srv(h1_addr, route.clone());
let h2_srv = h2::srv(h2_addr, route.clone(), cert_loader.clone());
let h3_srv = h3::srv(h3_addr, route, cert_loader);
println!("h1 {h1_addr}\nh2 {h2_addr}\nh3 {h3_addr}");
xerr::log!(tokio::try_join!(h1_srv, h2_srv, h3_srv));
Ok(())
}