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}