use crate::StorageEvent;
use tokio::sync::broadcast;
pub const EVENT_CHANNEL_CAPACITY: usize = 256;
pub fn new_event_channel() -> (
broadcast::Sender<StorageEvent>,
broadcast::Receiver<StorageEvent>,
) {
broadcast::channel(EVENT_CHANNEL_CAPACITY)
}
pub fn fire_stored(
tx: &broadcast::Sender<StorageEvent>,
account: String,
mailbox: String,
uid: u32,
) {
let event = StorageEvent::MessageStored {
account,
mailbox,
uid,
};
if let Err(e) = tx.send(event) {
tracing::debug!(
"No active subscribers for StorageEvent::MessageStored: {}",
e
);
}
}
pub fn fire_expunged(
tx: &broadcast::Sender<StorageEvent>,
account: String,
mailbox: String,
uid: u32,
) {
let event = StorageEvent::MessageExpunged {
account,
mailbox,
uid,
};
if let Err(e) = tx.send(event) {
tracing::debug!(
"No active subscribers for StorageEvent::MessageExpunged: {}",
e
);
}
}