use tokio::sync::broadcast;
use super::types::Event;
#[derive(Clone)]
pub struct EventBus {
tx: broadcast::Sender<Event>,
}
impl EventBus {
pub fn new() -> Self {
let (tx, _) = broadcast::channel(4096);
Self { tx }
}
pub fn subscribe(&self) -> broadcast::Receiver<Event> {
self.tx.subscribe()
}
pub fn publish(&self, event: Event) {
let _ = self.tx.send(event);
}
}
impl Default for EventBus {
fn default() -> Self {
Self::new()
}
}