use crate::router::xrpc::XrpcEndpoint; use axum::Router as axumRouter; use core::net::SocketAddr; use std::net::{IpAddr, Ipv4Addr}; use tokio::net::TcpListener; pub struct Router { addr: SocketAddr, xrpc: Vec, } mod xrpc; impl Router { pub fn new() -> Self { let xrpc = vec![XrpcEndpoint::not_implemented()]; let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127,0,0,1)), 6702); Router { xrpc, addr } } pub async fn serve(self) { let listener = TcpListener::bind(self.addr).await.unwrap(); let mut router = axumRouter::new(); for endpoint in self.xrpc { router = endpoint.add_to_router(router); } axum::serve(listener, router).await.unwrap(); } }