forked from lavina/lavina
1
0
Fork 0
lavina/crates/projection-irc/src/commands/mod.rs

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<()>>;
}