This commit is contained in:
2025-07-15 17:05:04 +02:00
commit d72254c7d0
25 changed files with 2074 additions and 0 deletions

40
src/domain/event.rs Normal file
View File

@@ -0,0 +1,40 @@
use std::net::SocketAddr;
use tokio::sync::mpsc;
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: mpsc::Sender<Event>,
}
impl EventBus {
pub fn new() -> (Self, mpsc::Receiver<Event>) {
let (sender, receiver) = mpsc::channel(10000);
(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) -> mpsc::Sender<Event> {
self.sender.clone()
}
}