use crate::message::{handlers::Handlers, Message}; use std::sync::mpsc::Sender; /// Add `` to make it generic over any operation type. pub struct MessageDispatcher { sender: Sender, handlers: Handlers, } impl MessageDispatcher { pub fn new(sender: Sender, handlers: Handlers) -> Self { MessageDispatcher { 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 { println!( "No handler found for message code: {:?}", message.get_message_code() ); } } }