From 68917c78bedbc0029d586e9a42366432b239a669 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Mon, 14 Feb 2022 09:31:31 +0100 Subject: [PATCH] Implement Server::add_request_handler in terms of ::add_message_handler --- crates/server/src/rpc.rs | 47 ++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/crates/server/src/rpc.rs b/crates/server/src/rpc.rs index 8d406e910c..f5a8b4f8f7 100644 --- a/crates/server/src/rpc.rs +++ b/crates/server/src/rpc.rs @@ -121,36 +121,27 @@ impl Server { Fut: 'static + Send + Future>, M: RequestMessage, { - let prev_handler = self.handlers.insert( - TypeId::of::(), - Box::new(move |server, envelope| { - let envelope = envelope.into_any().downcast::>().unwrap(); - let receipt = envelope.receipt(); - let response = (handler)(server.clone(), *envelope); - async move { - match response.await { - Ok(response) => { - server.peer.respond(receipt, response)?; - Ok(()) - } - Err(error) => { - server.peer.respond_with_error( - receipt, - proto::Error { - message: error.to_string(), - }, - )?; - Err(error) - } + self.add_message_handler(move |server, envelope| { + let receipt = envelope.receipt(); + let response = (handler)(server.clone(), envelope); + async move { + match response.await { + Ok(response) => { + server.peer.respond(receipt, response)?; + Ok(()) + } + Err(error) => { + server.peer.respond_with_error( + receipt, + proto::Error { + message: error.to_string(), + }, + )?; + Err(error) } } - .boxed() - }), - ); - if prev_handler.is_some() { - panic!("registered a handler for the same message twice"); - } - self + } + }) } pub fn handle_connection(