Files
ox_speak_server/src/domain/event.rs
2025-07-19 03:45:57 +02:00

38 lines
782 B
Rust

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<Event>,
}
impl EventBus {
pub fn new() -> (Self, kanal::AsyncReceiver<Event>) {
let (sender, receiver) = kanal::bounded_async::<Event>(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<Event> {
self.sender.clone()
}
}