forked from lavina/lavina
34 lines
669 B
Rust
34 lines
669 B
Rust
use lavina_core::{prelude::Str, repo::Storage};
|
|
use std::future::Future;
|
|
use tokio::io::AsyncWrite;
|
|
|
|
pub mod whois;
|
|
|
|
pub struct HandlerArgs<T: AsyncWrite + Unpin> {
|
|
server_name: Str,
|
|
client: Str,
|
|
writer: T,
|
|
storage: Storage,
|
|
}
|
|
|
|
impl<T> HandlerArgs<T>
|
|
where
|
|
T: AsyncWrite + Unpin,
|
|
{
|
|
pub fn new(server_name: Str, client: Str, writer: T, storage: Storage) -> HandlerArgs<T> {
|
|
HandlerArgs {
|
|
server_name,
|
|
client,
|
|
writer,
|
|
storage,
|
|
}
|
|
}
|
|
}
|
|
|
|
pub trait Handler<T>
|
|
where
|
|
T: AsyncWrite + Unpin,
|
|
{
|
|
fn handle(&self, arg: HandlerArgs<T>) -> impl Future<Output = anyhow::Result<()>>;
|
|
}
|