aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/instance.rs34
-rw-r--r--src/main.rs3
-rw-r--r--src/server.rs4
-rw-r--r--src/service.rs (renamed from src/connection.rs)27
4 files changed, 30 insertions, 38 deletions
diff --git a/src/instance.rs b/src/instance.rs
deleted file mode 100644
index 6e11be5..0000000
--- a/src/instance.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-use std::sync::Arc;
-use std::task::{Context, Poll};
-
-use anyhow::Result;
-use boitalettres::server::accept::addr::AddrStream;
-use futures::future::BoxFuture;
-use tower::Service;
-
-use crate::connection::Connection;
-use crate::mailstore::Mailstore;
-
-pub struct Instance {
- pub mailstore: Arc<Mailstore>,
-}
-impl Instance {
- pub fn new(mailstore: Arc<Mailstore>) -> Self {
- Self { mailstore }
- }
-}
-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 ms = self.mailstore.clone();
- Box::pin(async { Ok(Connection::new(ms)) })
- }
-}
diff --git a/src/main.rs b/src/main.rs
index 62a5d81..8f7d1e5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,13 +1,12 @@
mod bayou;
mod command;
mod config;
-mod connection;
mod cryptoblob;
-mod instance;
mod login;
mod mailbox;
mod mailstore;
mod server;
+mod service;
mod time;
mod uidindex;
diff --git a/src/server.rs b/src/server.rs
index 57ce048..2bbdc2b 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -2,7 +2,7 @@ use anyhow::Result;
use std::sync::Arc;
use crate::config::*;
-use crate::instance;
+use crate::service;
use crate::mailstore;
use boitalettres::server::accept::addr::AddrIncoming;
@@ -32,7 +32,7 @@ impl Server {
//mailbox.test().await?;
let server =
- ImapServer::new(self.incoming).serve(instance::Instance::new(self.mailstore.clone()));
+ ImapServer::new(self.incoming).serve(service::Instance::new(self.mailstore.clone()));
let _ = server.await?;
Ok(())
diff --git a/src/connection.rs b/src/service.rs
index 335caaa..888a217 100644
--- a/src/connection.rs
+++ b/src/service.rs
@@ -1,6 +1,8 @@
use std::sync::Arc;
use std::task::{Context, Poll};
+use anyhow::Result;
+use boitalettres::server::accept::addr::AddrStream;
use boitalettres::errors::Error as BalError;
use boitalettres::proto::{Request, Response};
use futures::future::BoxFuture;
@@ -10,6 +12,30 @@ use tower::Service;
use crate::command;
use crate::mailstore::Mailstore;
+pub struct Instance {
+ pub mailstore: Arc<Mailstore>,
+}
+impl Instance {
+ pub fn new(mailstore: Arc<Mailstore>) -> Self {
+ Self { mailstore }
+ }
+}
+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 ms = self.mailstore.clone();
+ Box::pin(async { Ok(Connection::new(ms)) })
+ }
+}
+
pub struct Connection {
pub mailstore: Arc<Mailstore>,
}
@@ -39,3 +65,4 @@ impl Service<Request> for Connection {
})
}
}
+