2022-05-09 17:15:52 +00:00
|
|
|
use boitalettres::proto::{Request, Response};
|
|
|
|
use boitalettres::server::accept::addr::{AddrIncoming, AddrStream};
|
|
|
|
use boitalettres::server::Server;
|
2022-05-19 08:18:25 +00:00
|
|
|
use tracing_subscriber;
|
2022-05-09 17:15:52 +00:00
|
|
|
|
|
|
|
async fn handle_req(req: Request) -> eyre::Result<Response> {
|
|
|
|
use imap_codec::types::response::Status;
|
|
|
|
|
|
|
|
tracing::debug!("Got request: {:#?}", req);
|
|
|
|
|
|
|
|
Ok(Response::Status(
|
|
|
|
Status::ok(Some(req.tag), None, "Ok").map_err(|e| eyre::eyre!(e))?,
|
|
|
|
))
|
|
|
|
}
|
|
|
|
|
|
|
|
#[tokio::main]
|
|
|
|
async fn main() -> eyre::Result<()> {
|
2022-05-19 08:18:25 +00:00
|
|
|
tracing_subscriber::fmt::init();
|
2022-05-09 17:15:52 +00:00
|
|
|
|
|
|
|
let incoming = AddrIncoming::new("127.0.0.1:4567").await?;
|
|
|
|
|
|
|
|
let make_service = tower::service_fn(|addr: &AddrStream| {
|
2022-05-13 15:52:30 +00:00
|
|
|
tracing::debug!(remote_addr = %addr.remote_addr, local_addr = %addr.local_addr, "accept");
|
|
|
|
|
2022-05-20 14:29:43 +00:00
|
|
|
let service = tower::ServiceBuilder::new().service_fn(handle_req);
|
2022-05-13 15:52:30 +00:00
|
|
|
|
|
|
|
futures::future::ok::<_, std::convert::Infallible>(service)
|
2022-05-09 17:15:52 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
let server = Server::new(incoming).serve(make_service);
|
2022-05-10 15:42:56 +00:00
|
|
|
let _ = server.await?;
|
2022-05-09 17:15:52 +00:00
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|