fix: deadlock issue with sending messages

intoduced a channel and used stream.try_clone
This commit is contained in:
michel
2024-09-10 11:59:51 +02:00
committed by Michel de Graaf
parent 1461e385cf
commit 6281b0c89e
6 changed files with 158 additions and 140 deletions
+4 -3
View File
@@ -7,18 +7,19 @@ use crate::{
server::Context,
};
use std::collections::HashMap;
use std::sync::{Arc, Mutex};
pub trait MessageHandler {
fn handle(&self, message: &mut Message, context: Context);
fn handle(&self, message: &mut Message, context: Arc<Mutex<Context>>);
}
pub struct MessageDispatcher {
handlers: HashMap<MessageType, Box<dyn MessageHandler + Send + Sync>>,
context: Context,
context: Arc<Mutex<Context>>,
}
impl MessageDispatcher {
pub fn new(context: Context) -> Self {
pub fn new(context: Arc<Mutex<Context>>) -> Self {
let mut dispatcher = Self {
handlers: HashMap::new(),
context,