From 737d6aa5c180adb906a5e09b67955acd2ecd9613 Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Fri, 19 Feb 2016 16:57:31 +0100 Subject: [PATCH] Add ParentSpeedRatioResponse and derive Debug for ServerResponse. --- src/proto/server.rs | 49 ++++++++++++++++++++++++++++++++++++++------- src/server.rs | 14 ++++--------- 2 files changed, 46 insertions(+), 17 deletions(-) diff --git a/src/proto/server.rs b/src/proto/server.rs index 26dceb7..f08809d 100644 --- a/src/proto/server.rs +++ b/src/proto/server.rs @@ -9,6 +9,7 @@ use super::Packet; const CODE_LOGIN: u32 = 1; const CODE_ROOM_LIST: u32 = 64; const CODE_PARENT_MIN_SPEED: u32 = 83; +const CODE_PARENT_SPEED_RATIO: u32 = 84; trait WriteToPacket { fn write_to_packet(&self, &mut Packet) -> io::Result<()>; @@ -18,6 +19,7 @@ trait WriteToPacket { * SERVER REQUEST * *================*/ +#[derive(Debug)] pub enum ServerRequest { LoginRequest(LoginRequest), RoomListRequest(RoomListRequest), @@ -41,12 +43,14 @@ impl ServerRequest { * SERVER RESPONSE * *=================*/ +#[derive(Debug)] pub enum ServerResponse { LoginResponse(LoginResponse), RoomListResponse(RoomListResponse), - // Unused/unknown responses + // Unknown purpose ParentMinSpeedResponse(ParentMinSpeedResponse), + ParentSpeedRatioResponse(ParentSpeedRatioResponse), UnknownResponse(u32, Packet), } @@ -55,16 +59,24 @@ impl ServerResponse { pub fn from_packet(mut packet: Packet) -> io::Result { let code = try!(packet.read_uint()); let resp = match code { - CODE_LOGIN => ServerResponse::LoginResponse( - try!(LoginResponse::from_packet(&mut packet)) + CODE_LOGIN => + ServerResponse::LoginResponse( + try!(LoginResponse::from_packet(&mut packet)) ), - CODE_ROOM_LIST => ServerResponse::RoomListResponse( - try!(RoomListResponse::from_packet(&mut packet)) + CODE_ROOM_LIST => + ServerResponse::RoomListResponse( + try!(RoomListResponse::from_packet(&mut packet)) ), - CODE_PARENT_MIN_SPEED => ServerResponse::ParentMinSpeedResponse( - try!(ParentMinSpeedResponse::from_packet(&mut packet)) + CODE_PARENT_MIN_SPEED => + ServerResponse::ParentMinSpeedResponse( + try!(ParentMinSpeedResponse::from_packet(&mut packet)) + ), + + CODE_PARENT_SPEED_RATIO => + ServerResponse::ParentSpeedRatioResponse( + try!(ParentSpeedRatioResponse::from_packet(&mut packet)) ), code => return Ok(ServerResponse::UnknownResponse(code, packet)), @@ -88,6 +100,7 @@ fn md5_str(string: &str) -> String { * LOGIN * *=======*/ +#[derive(Debug)] pub struct LoginRequest { username: String, password: String, @@ -126,6 +139,7 @@ impl WriteToPacket for LoginRequest { } } +#[derive(Debug)] pub enum LoginResponse { LoginOk { motd: String, @@ -165,6 +179,7 @@ impl LoginResponse { * ROOM LIST * *===========*/ +#[derive(Debug)] pub struct RoomListRequest; impl RoomListRequest { @@ -179,6 +194,7 @@ impl WriteToPacket for RoomListRequest { } } +#[derive(Debug)] pub struct RoomListResponse { pub rooms: Vec<(String, u32)>, pub owned_private_rooms: Vec<(String, u32)>, @@ -260,6 +276,7 @@ impl RoomListResponse { * PARENT MIN SPEED * *==================*/ +#[derive(Debug)] pub struct ParentMinSpeedResponse { pub value: u32, } @@ -272,3 +289,21 @@ impl ParentMinSpeedResponse { }) } } + +/*====================* + * PARENT SPEED RATIO * + *====================*/ + +#[derive(Debug)] +pub struct ParentSpeedRatioResponse { + pub value: u32, +} + +impl ParentSpeedRatioResponse { + fn from_packet(packet: &mut Packet) -> io::Result { + let value = try!(packet.read_uint()); + Ok(ParentSpeedRatioResponse { + value: value, + }) + } +} diff --git a/src/server.rs b/src/server.rs index 3c78f13..ddc1651 100644 --- a/src/server.rs +++ b/src/server.rs @@ -83,11 +83,11 @@ impl ServerConnection { ServerResponse::RoomListResponse(response) => self.handle_room_list_response(response), - ServerResponse::ParentMinSpeedResponse(response) => - self.handle_parent_min_speed_response(response), + ServerResponse::UnknownResponse(code, packet) => + warn!("Unknown response: code {}, size {}", + code, packet.bytes_remaining()), - ServerResponse::UnknownResponse(code, _) => - warn!("Unknown packet code {}", code), + response => warn!("Unhandled response: {:?}", response), } } @@ -141,12 +141,6 @@ impl ServerConnection { info!("Room \"{}\" has {} members", room_name, num_members); } } - - fn handle_parent_min_speed_response( - &mut self, response: ParentMinSpeedResponse) { - debug!("Received ParentMinSpeedResponse with value {}", - response.value); - } } impl Handler for ServerConnection {