mediator_sys/mediator/asynchronous/basic/
interface.rs1use async_trait::async_trait;
2use std::{fmt::Debug, sync::mpsc::TryRecvError};
3
4#[async_trait]
6pub trait AsyncMediatorInternal<Ev: Debug> {
7 async fn publish(&self, event: Ev);
8}
9
10#[async_trait]
13pub trait AsyncMediatorInternalHandle<Ev: Debug> {
14 async fn send<Req>(&self, req: Req)
15 where
16 Req: Send,
17 Self: AsyncRequestHandler<Req, Ev>;
18}
19
20#[async_trait]
23pub trait AsyncMediatorInternalNext {
24 async fn next(&self) -> Result<(), TryRecvError>;
25}
26
27#[async_trait]
30pub trait AsyncRequestHandler<Req, Res>
31where
32 Self: Sync,
33{
34 async fn handle(&self, req: Req);
35}