From 3328aaed3d7fdac00e3b25cc86f46250c26eb725 Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Fri, 16 Jul 2021 18:33:30 -0400 Subject: [PATCH] Small fixes to Dispatcher. --- client/src/dispatcher.rs | 47 +++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/client/src/dispatcher.rs b/client/src/dispatcher.rs index 56d7952..2908623 100644 --- a/client/src/dispatcher.rs +++ b/client/src/dispatcher.rs @@ -14,6 +14,12 @@ pub enum Message { ServerResponse(ServerResponse), } +impl From for Message { + fn from(response: ServerResponse) -> Self { + Self::ServerResponse(response) + } +} + /// Pairs together a message and its handler as chosen by the dispatcher. /// Implements Job so as to be scheduled on an executor. struct DispatchedMessage { @@ -21,12 +27,6 @@ struct DispatchedMessage { handler: H, } -impl DispatchedMessage { - fn new(message: M, handler: H) -> Self { - Self { message, handler } - } -} - impl Job for DispatchedMessage where M: Debug + Send, @@ -57,14 +57,17 @@ impl Dispatcher { pub fn dispatch(&self, message: Message) -> Box { match message { Message::ServerResponse(ServerResponse::LoginResponse(response)) => { - Box::new(DispatchedMessage::new(response, LoginHandler::default())) + Box::new(DispatchedMessage { + message: response, + handler: LoginHandler::default(), + }) } Message::ServerResponse(ServerResponse::PrivilegedUsersResponse( response, - )) => Box::new(DispatchedMessage::new( - response, - SetPrivilegedUsersHandler::default(), - )), + )) => Box::new(DispatchedMessage { + message: response, + handler: SetPrivilegedUsersHandler::default(), + }), _ => panic!("Unimplemented"), } } @@ -72,27 +75,27 @@ impl Dispatcher { #[cfg(test)] mod tests { - use solstice_proto::server; + use solstice_proto::server::{self, ServerResponse}; use super::*; + fn into_message>(t: T) -> Message { + t.into().into() + } + #[test] fn dispatcher_privileged_users_response() { - Dispatcher::new().dispatch(Message::ServerResponse( - server::ServerResponse::PrivilegedUsersResponse( - server::PrivilegedUsersResponse { - users: vec!["foo".to_string(), "bar".to_string(), "baz".to_string()], - }, - ), - )); + Dispatcher::new().dispatch(into_message(server::PrivilegedUsersResponse { + users: vec!["foo".to_string(), "bar".to_string(), "baz".to_string()], + })); } #[test] fn dispatcher_login_response() { - Dispatcher::new().dispatch(Message::ServerResponse( - server::ServerResponse::LoginResponse(server::LoginResponse::LoginFail { + Dispatcher::new().dispatch(into_message( + server::LoginResponse::LoginFail { reason: "bleep bloop".to_string(), - }), + }, )); } }