]> git.r.bdr.sh - rbdr/olden-mail/blobdiff - src/middleware/mod.rs
Actually terminate with a newline
[rbdr/olden-mail] / src / middleware / mod.rs
index a1070f4840082d288014d58b509ff6ae5cba3818..a0bc50f2a5df24613e9e9a10a9102684446cc997 100644 (file)
@@ -1,7 +1,16 @@
 mod find_mailboxes_compatibility;
 
-use find_mailboxes_compatibility::middleware as find_mailboxes_compatibility_middleware;
+use find_mailboxes_compatibility::FindMailboxesCompatibility;
 
-type Middleware = fn(&[u8]) -> Vec<u8>;
+use std::sync::{Arc, Mutex};
 
-pub const MIDDLEWARE: [Middleware; 1] = [find_mailboxes_compatibility_middleware];
+pub trait Middleware: Sync + Send {
+    fn client_message(&mut self, input: &[u8]) -> Vec<u8>;
+    fn server_message(&mut self, input: &[u8]) -> Vec<u8>;
+}
+
+pub fn get() -> Arc<Mutex<Vec<Box<dyn Middleware>>>> {
+    Arc::new(Mutex::new(vec![
+        Box::new(FindMailboxesCompatibility::new()),
+    ]))
+}