38 lines
782 B
Rust
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()
|
|
}
|
|
} |