docbox_core/events/
mpsc.rs

1use tokio::sync::mpsc;
2
3use super::{EventPublisher, TenantEventMessage};
4
5/// In memory multi-producer single-consumer event channel, used for
6/// event handling in tests
7#[derive(Clone)]
8pub struct MpscEventPublisher {
9    tx: mpsc::UnboundedSender<TenantEventMessage>,
10}
11
12impl MpscEventPublisher {
13    pub fn new() -> (Self, mpsc::UnboundedReceiver<TenantEventMessage>) {
14        let (tx, rx) = mpsc::unbounded_channel();
15        (Self { tx }, rx)
16    }
17}
18
19impl EventPublisher for MpscEventPublisher {
20    fn publish_event(&self, event: super::TenantEventMessage) {
21        tracing::debug!(?event, "mpsc tenant event");
22        _ = self.tx.send(event);
23    }
24}