diff --git a/src/proto/server/constants.rs b/src/proto/server/constants.rs index f1d3fa9..fbcd57b 100644 --- a/src/proto/server/constants.rs +++ b/src/proto/server/constants.rs @@ -1,5 +1,6 @@ pub const CODE_LOGIN: u32 = 1; pub const CODE_SET_LISTEN_PORT: u32 = 2; +pub const CODE_PEER_ADDRESS: u32 = 3; pub const CODE_CONNECT_TO_PEER: u32 = 18; pub const CODE_ROOM_LIST: u32 = 64; pub const CODE_PRIVILEGED_USERS: u32 = 69; diff --git a/src/proto/server/request.rs b/src/proto/server/request.rs index 2c148fa..989b2a3 100644 --- a/src/proto/server/request.rs +++ b/src/proto/server/request.rs @@ -17,6 +17,7 @@ trait WriteToPacket { #[derive(Debug)] pub enum ServerRequest { LoginRequest(LoginRequest), + PeerAddressRequest(PeerAddressRequest), RoomListRequest(RoomListRequest), SetListenPortRequest(SetListenPortRequest), } @@ -27,6 +28,9 @@ impl ServerRequest { ServerRequest::LoginRequest(ref request) => (Packet::new(CODE_LOGIN), request), + ServerRequest::PeerAddressRequest(ref request) => + (Packet::new(CODE_PEER_ADDRESS), request), + ServerRequest::RoomListRequest(ref request) => (Packet::new(CODE_ROOM_LIST), request), @@ -87,6 +91,30 @@ impl WriteToPacket for LoginRequest { } } +/*==============* + * PEER ADDRESS * + *==============*/ + +#[derive(Debug)] +pub struct PeerAddressRequest { + username: String, +} + +impl PeerAddressRequest { + fn new(username: &str) -> Self { + PeerAddressRequest { + username: username.to_string(), + } + } +} + +impl WriteToPacket for PeerAddressRequest { + fn write_to_packet(&self, packet: &mut Packet) -> io::Result<()> { + try!(packet.write_str(&self.username)); + Ok(()) + } +} + /*===========* * ROOM LIST * *===========*/