//! Event bus for kernel events use tokio::sync::broadcast; use zclaw_types::Event; /// Event bus for publishing and subscribing to events pub struct EventBus { sender: broadcast::Sender, } impl EventBus { /// Create a new event bus pub fn new() -> Self { let (sender, _) = broadcast::channel(1000); Self { sender } } /// Publish an event pub fn publish(&self, event: Event) { // Ignore send errors (no subscribers) let _ = self.sender.send(event); } /// Subscribe to events pub fn subscribe(&self) -> broadcast::Receiver { self.sender.subscribe() } } impl Default for EventBus { fn default() -> Self { Self::new() } }