appview/rust/src/router.rs

32 lines
719 B
Rust
Raw Normal View History

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<XrpcEndpoint>,
}
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();
}
}