aboutsummaryrefslogtreecommitdiff
path: root/src/service.rs
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2022-06-17 18:39:36 +0200
committerQuentin Dufour <quentin@deuxfleurs.fr>2022-06-17 18:39:36 +0200
commit5dd5ae8bcd6f88703bc483d7f8d5882fefad4e7e (patch)
tree312708a97fcfcd273481f41b8bd6c878030573f4 /src/service.rs
parent41f1b02171cee36706d30cf24329ff12780d47fd (diff)
downloadaerogramme-5dd5ae8bcd6f88703bc483d7f8d5882fefad4e7e.tar.gz
aerogramme-5dd5ae8bcd6f88703bc483d7f8d5882fefad4e7e.zip
WIP Refactor, code is broken
Diffstat (limited to 'src/service.rs')
-rw-r--r--src/service.rs62
1 files changed, 0 insertions, 62 deletions
diff --git a/src/service.rs b/src/service.rs
deleted file mode 100644
index ce272a3..0000000
--- a/src/service.rs
+++ /dev/null
@@ -1,62 +0,0 @@
-use std::sync::Arc;
-use std::task::{Context, Poll};
-
-use anyhow::Result;
-use boitalettres::errors::Error as BalError;
-use boitalettres::proto::{Request, Response};
-use boitalettres::server::accept::addr::AddrStream;
-use futures::future::BoxFuture;
-use futures::future::FutureExt;
-use tower::Service;
-
-use crate::session;
-use crate::LoginProvider;
-
-pub struct Instance {
- login_provider: Arc<dyn LoginProvider + Send + Sync>,
-}
-impl Instance {
- pub fn new(login_provider: Arc<dyn LoginProvider + Send + Sync>) -> Self {
- Self { login_provider }
- }
-}
-impl<'a> Service<&'a AddrStream> for Instance {
- type Response = Connection;
- type Error = anyhow::Error;
- type Future = BoxFuture<'static, Result<Self::Response>>;
-
- fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
- Poll::Ready(Ok(()))
- }
-
- fn call(&mut self, addr: &'a AddrStream) -> Self::Future {
- tracing::info!(remote_addr = %addr.remote_addr, local_addr = %addr.local_addr, "accept");
- let lp = self.login_provider.clone();
- async { Ok(Connection::new(lp)) }.boxed()
- }
-}
-
-pub struct Connection {
- session: session::Manager,
-}
-impl Connection {
- pub fn new(login_provider: Arc<dyn LoginProvider + Send + Sync>) -> Self {
- Self {
- session: session::Manager::new(login_provider),
- }
- }
-}
-impl Service<Request> for Connection {
- type Response = Response;
- type Error = BalError;
- type Future = BoxFuture<'static, Result<Self::Response, Self::Error>>;
-
- fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {
- Poll::Ready(Ok(()))
- }
-
- fn call(&mut self, req: Request) -> Self::Future {
- tracing::debug!("Got request: {:#?}", req);
- self.session.process(req)
- }
-}