use futures::{AsyncRead, AsyncWrite};
use crate::{
engine::{Engine, Error, Request},
wire::MessageAck,
};
pub trait Module {
type Error: From<Error>;
fn install<I, O>(&self, engine: &Engine<I, O>) -> impl Future<Output = Result<(), Self::Error>>
where
I: AsyncRead + Send + Unpin,
O: AsyncWrite + Send + Unpin;
fn on_watch<I, O>(
&self,
_engine: &Engine<I, O>,
_watch: MessageAck,
) -> impl Future<Output = Result<(), Self::Error>>
where
I: AsyncRead + Send + Unpin,
O: AsyncWrite + Send + Unpin,
{
futures::future::ok(())
}
fn on_message<I, O>(
&self,
_engine: &Engine<I, O>,
_request: &mut Request,
) -> impl Future<Output = Result<bool, Self::Error>>
where
I: AsyncRead + Send + Unpin,
O: AsyncWrite + Send + Unpin,
{
futures::future::ok(false)
}
}