use tokio::sync::broadcast;
pub const BROADCAST_CHANNEL_CAPACITY: usize = 256;
pub fn event_channel<E: Clone>() -> (broadcast::Sender<E>, broadcast::Receiver<E>) {
broadcast::channel(BROADCAST_CHANNEL_CAPACITY)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn capacity_is_256() {
assert_eq!(BROADCAST_CHANNEL_CAPACITY, 256);
}
#[tokio::test]
async fn event_channel_delivers_to_subscriber() {
let (tx, mut rx) = event_channel::<u32>();
let mut rx2 = tx.subscribe();
let _ = tx.send(7);
assert_eq!(rx.recv().await.unwrap(), 7);
assert_eq!(rx2.recv().await.unwrap(), 7);
}
}