use crate::message::{Message, handlers::Handlers}; use std::sync::mpsc::Sender; use crate::debug; pub struct MessageDispatcher { owner_name: String, sender: Sender, handlers: Handlers, } impl MessageDispatcher { #[must_use] pub const fn new( owner_name: String, sender: Sender, handlers: Handlers, ) -> Self { Self { owner_name, sender, handlers, } } pub fn dispatch(&self, message: &mut Message) { let code = message.get_message_code(); if let Some(handler) = self.handlers.get_handler(code) { message.set_pointer(8); handler.handle(message, self.sender.clone()); } else { debug!( "[{}:dispatcher] No handler found for message code: {code}", self.owner_name ); } } }