mm1_server/
behaviour.rs

1use futures::never::Never;
2use mm1_common::types::AnyError;
3use mm1_proto_ask::RequestHeader;
4
5pub enum Outcome<Rs = Never> {
6    Reply(Rs),
7    NoReply,
8    Break,
9}
10
11pub trait OnMessage<Ctx, M>: Send {
12    fn on_message(
13        &mut self,
14        ctx: &mut Ctx,
15        message: M,
16    ) -> impl Future<Output = Result<Outcome, AnyError>> + Send;
17}
18
19pub trait OnRequest<Ctx, Rq>: Send {
20    type Rs;
21
22    fn on_request(
23        &mut self,
24        ctx: &mut Ctx,
25        reply_to: RequestHeader,
26        request: Rq,
27    ) -> impl Future<Output = Result<Outcome<Self::Rs>, AnyError>> + Send;
28}