mm1_server/
behaviour.rs

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