From b50cc29d583ff4881447503a46400338cf7b60e6 Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Sat, 9 Apr 2016 11:47:18 +0200 Subject: [PATCH] Add proto::server::SayRoom{Request, Response}. --- src/proto/server/constants.rs | 21 +++++++++++---------- src/proto/server/request.rs | 22 ++++++++++++++++++++++ src/proto/server/response.rs | 31 ++++++++++++++++++++++++++++++- 3 files changed, 63 insertions(+), 11 deletions(-) diff --git a/src/proto/server/constants.rs b/src/proto/server/constants.rs index 6728560..6ae27e2 100644 --- a/src/proto/server/constants.rs +++ b/src/proto/server/constants.rs @@ -1,11 +1,12 @@ -pub const CODE_LOGIN: u32 = 1; -pub const CODE_SET_LISTEN_PORT: u32 = 2; -pub const CODE_PEER_ADDRESS: u32 = 3; -pub const CODE_JOIN_ROOM: u32 = 14; -pub const CODE_USER_JOINED_ROOM: u32 = 16; -pub const CODE_CONNECT_TO_PEER: u32 = 18; -pub const CODE_ROOM_LIST: u32 = 64; -pub const CODE_PRIVILEGED_USERS: u32 = 69; -pub const CODE_PARENT_MIN_SPEED: u32 = 83; +pub const CODE_LOGIN: u32 = 1; +pub const CODE_SET_LISTEN_PORT: u32 = 2; +pub const CODE_PEER_ADDRESS: u32 = 3; +pub const CODE_SAY_ROOM: u32 = 13; +pub const CODE_JOIN_ROOM: u32 = 14; +pub const CODE_USER_JOINED_ROOM: u32 = 16; +pub const CODE_CONNECT_TO_PEER: u32 = 18; +pub const CODE_ROOM_LIST: u32 = 64; +pub const CODE_PRIVILEGED_USERS: u32 = 69; +pub const CODE_PARENT_MIN_SPEED: u32 = 83; pub const CODE_PARENT_SPEED_RATIO: u32 = 84; -pub const CODE_WISHLIST_INTERVAL: u32 = 104; +pub const CODE_WISHLIST_INTERVAL: u32 = 104; diff --git a/src/proto/server/request.rs b/src/proto/server/request.rs index 60d68f5..bed5d84 100644 --- a/src/proto/server/request.rs +++ b/src/proto/server/request.rs @@ -20,6 +20,7 @@ pub enum ServerRequest { LoginRequest(LoginRequest), PeerAddressRequest(PeerAddressRequest), RoomListRequest, + SayRoomRequest(SayRoomRequest), SetListenPortRequest(SetListenPortRequest), } @@ -38,6 +39,9 @@ impl ServerRequest { ServerRequest::RoomListRequest => return Ok(Packet::new(CODE_ROOM_LIST)), + ServerRequest::SayRoomRequest(ref request) => + (Packet::new(CODE_SAY_ROOM), request), + ServerRequest::SetListenPortRequest(ref request) => (Packet::new(CODE_SET_LISTEN_PORT), request), }; @@ -135,6 +139,24 @@ impl WriteToPacket for PeerAddressRequest { } } +/*==========* + * SAY ROOM * + *==========*/ + +#[derive(Debug)] +pub struct SayRoomRequest { + pub room_name: String, + pub message: String, +} + +impl WriteToPacket for SayRoomRequest { + fn write_to_packet(&self, packet: &mut Packet) -> io::Result<()> { + try!(packet.write_str(&self.room_name)); + try!(packet.write_str(&self.message)); + Ok(()) + } +} + /*=================* * SET LISTEN PORT * *=================*/ diff --git a/src/proto/server/response.rs b/src/proto/server/response.rs index a513301..e6725b4 100644 --- a/src/proto/server/response.rs +++ b/src/proto/server/response.rs @@ -1,4 +1,3 @@ -use std::io; use std::net; use super::constants::*; @@ -27,6 +26,7 @@ pub enum ServerResponse { PeerAddressResponse(PeerAddressResponse), PrivilegedUsersResponse(PrivilegedUsersResponse), RoomListResponse(RoomListResponse), + SayRoomResponse(SayRoomResponse), UserJoinedRoomResponse(UserJoinedRoomResponse), WishlistIntervalResponse(WishlistIntervalResponse), @@ -71,6 +71,11 @@ impl FromPacket for ServerResponse { try!(RoomListResponse::from_packet(packet)) ), + CODE_SAY_ROOM => + ServerResponse::SayRoomResponse( + try!(SayRoomResponse::from_packet(packet)) + ), + CODE_USER_JOINED_ROOM => ServerResponse::UserJoinedRoomResponse( try!(UserJoinedRoomResponse::from_packet(packet)) @@ -448,6 +453,30 @@ impl RoomListResponse { } } +/*==========* + * SAY ROOM * + *==========*/ + +#[derive(Debug)] +pub struct SayRoomResponse { + pub room_name: String, + pub user_name: String, + pub message: String, +} + +impl FromPacket for SayRoomResponse { + fn from_packet(packet: &mut Packet) -> result::Result { + let room_name = try!(packet.read_str()); + let user_name = try!(packet.read_str()); + let message = try!(packet.read_str()); + Ok(SayRoomResponse { + room_name: room_name, + user_name: user_name, + message: message, + }) + } +} + /*==================* * USER JOINED ROOM * *==================*/