use crate::network::protocol::{UDPMessage}; #[derive(Clone, Debug)] pub enum Event { AppStarted, AppStopped, UdpStarted, UdpStopped, UdpIn(UDPMessage), UdpOut(UDPMessage), TickSeconds } #[derive(Clone)] pub struct EventBus { pub sender: kanal::AsyncSender, } impl EventBus { pub fn new() -> (Self, kanal::AsyncReceiver) { let (sender, receiver) = kanal::bounded_async::(4096); (Self { sender }, receiver) } pub async fn emit(&self, event: Event) { let _ = self.sender.send(event).await; } pub fn emit_sync(&self, event: Event) { let _ = self.sender.try_send(event); } pub fn clone_sender(&self) -> kanal::AsyncSender { self.sender.clone() } }