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}