From c2c69a3e1a658b23cc7e95551c1d3ac8023d35cd Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Fri, 19 Feb 2016 15:31:46 +0100 Subject: [PATCH] Add ParentMinSpeedResponse. --- src/proto/server.rs | 34 ++++++++++++++++++++++++++++++++++ src/server.rs | 19 ++++++++++++++----- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/src/proto/server.rs b/src/proto/server.rs index a793ec8..c81526d 100644 --- a/src/proto/server.rs +++ b/src/proto/server.rs @@ -8,11 +8,16 @@ use super::Packet; const CODE_LOGIN: u32 = 1; const CODE_ROOM_LIST: u32 = 64; +const CODE_PARENT_MIN_SPEED: u32 = 83; trait WriteToPacket { fn write_to_packet(&self, &mut Packet) -> io::Result<()>; } +/*================* + * SERVER REQUEST * + *================*/ + pub enum ServerRequest { LoginRequest(LoginRequest), RoomListRequest(RoomListRequest), @@ -32,10 +37,17 @@ impl ServerRequest { } } +/*=================* + * SERVER RESPONSE * + *=================*/ + pub enum ServerResponse { LoginResponse(LoginResponse), RoomListResponse(RoomListResponse), + // Unused/unknown responses + ParentMinSpeedResponse(ParentMinSpeedResponse), + UnknownResponse(u32, Packet), } @@ -50,6 +62,10 @@ impl ServerResponse { try!(RoomListResponse::from_packet(packet)) ), + CODE_PARENT_MIN_SPEED => ServerResponse::ParentMinSpeedResponse( + try!(ParentMinSpeedResponse::from_packet(packet)) + ), + code => ServerResponse::UnknownResponse(code, packet), }; Ok(resp) @@ -212,3 +228,21 @@ impl RoomListResponse { Ok(rooms) } } + +/*==================* + * PARENT MIN SPEED * + *==================*/ + +pub struct ParentMinSpeedResponse { + pub value: u32, +} + +impl ParentMinSpeedResponse { + fn from_packet(mut packet: Packet) -> io::Result { + let value = try!(packet.read_uint()); + Ok(ParentMinSpeedResponse { + value: value, + }) + } +} + diff --git a/src/server.rs b/src/server.rs index 01e877b..0d3107c 100644 --- a/src/server.rs +++ b/src/server.rs @@ -72,11 +72,14 @@ impl ServerConnection { fn handle_server_response(&mut self, response: ServerResponse) { match response { - ServerResponse::LoginResponse(login_response) => - self.handle_login_response(login_response), + ServerResponse::LoginResponse(response) => + self.handle_login_response(response), - ServerResponse::RoomListResponse(room_list_response) => - self.handle_room_list_response(room_list_response), + ServerResponse::RoomListResponse(response) => + self.handle_room_list_response(response), + + ServerResponse::ParentMinSpeedResponse(response) => + self.handle_parent_min_speed_response(response), ServerResponse::UnknownResponse(code, _) => warn!("Unknown packet code {}", code), @@ -104,7 +107,7 @@ impl ServerConnection { info!("External IP address: {}", ip); match password_md5_opt { - Some(password_md5) => { + Some(_) => { info!(concat!( "Connected to official server ", "as official client")); @@ -133,6 +136,12 @@ 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 {