diff --git a/src/proto/server.rs b/src/proto/server.rs index 9f166ce..81043c2 100644 --- a/src/proto/server.rs +++ b/src/proto/server.rs @@ -12,8 +12,13 @@ const VERSION_MINOR: u32 = 0; const CODE_LOGIN: u32 = 1; const CODE_ROOM_LIST: u32 = 64; +trait WriteToPacket { + fn write_to_packet(&self, &mut Packet) -> io::Result<()>; +} + pub enum ServerRequest { LoginRequest(LoginRequest), + RoomListRequest(RoomListRequest), } impl ServerRequest { @@ -21,16 +26,15 @@ impl ServerRequest { let (mut packet, request): (Packet, &WriteToPacket) = match *self { ServerRequest::LoginRequest(ref request) => (Packet::new(CODE_LOGIN), request), + + ServerRequest::RoomListRequest(ref request) => + (Packet::new(CODE_ROOM_LIST), request), }; try!(request.write_to_packet(&mut packet)); Ok(packet) } } -trait WriteToPacket { - fn write_to_packet(&self, &mut Packet) -> io::Result<()>; -} - pub enum ServerResponse { LoginResponse(LoginResponse), UnknownResponse(u32, Packet), @@ -54,6 +58,10 @@ fn md5_str(string: &str) -> String { hasher.result_str() } +/*=======* + * LOGIN * + *=======*/ + pub struct LoginRequest { username: String, password: String, @@ -123,3 +131,20 @@ impl LoginResponse { } } +/*===========* + * ROOM LIST * + *===========*/ + +pub struct RoomListRequest; + +impl RoomListRequest { + pub fn new() -> Self { + RoomListRequest + } +} + +impl WriteToPacket for RoomListRequest { + fn write_to_packet(&self, packet: &mut Packet) -> io::Result<()> { + Ok(()) + } +}