diff --git a/src/proto/server/constants.rs b/src/proto/server/constants.rs index 109ee1d..bee4681 100644 --- a/src/proto/server/constants.rs +++ b/src/proto/server/constants.rs @@ -8,6 +8,7 @@ pub const CODE_ROOM_LEAVE: u32 = 15; pub const CODE_ROOM_USER_JOINED: u32 = 16; pub const CODE_ROOM_USER_LEFT: u32 = 17; pub const CODE_CONNECT_TO_PEER: u32 = 18; +pub const CODE_FILE_SEARCH: u32 = 26; pub const CODE_USER_INFO: u32 = 36; 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 c55440f..fa98cc2 100644 --- a/src/proto/server/request.rs +++ b/src/proto/server/request.rs @@ -14,6 +14,7 @@ use super::super::packet::{MutPacket, WriteToPacket}; pub enum ServerRequest { CannotConnectRequest(CannotConnectRequest), ConnectToPeerRequest(ConnectToPeerRequest), + FileSearchRequest(FileSearchRequest), LoginRequest(LoginRequest), PeerAddressRequest(PeerAddressRequest), RoomJoinRequest(RoomJoinRequest), @@ -37,6 +38,11 @@ impl WriteToPacket for ServerRequest { try!(packet.write_value(request)); }, + ServerRequest::FileSearchRequest(ref request) => { + try!(packet.write_value(&CODE_FILE_SEARCH)); + try!(packet.write_value(request)); + }, + ServerRequest::LoginRequest(ref request) => { try!(packet.write_value(&CODE_LOGIN)); try!(packet.write_value(request)); @@ -124,6 +130,24 @@ impl WriteToPacket for ConnectToPeerRequest { } } +/*=============* + * FILE SEARCH * + *=============*/ + +#[derive(Debug)] +pub struct FileSearchRequest { + pub ticket: u32, + pub query: String, +} + +impl WriteToPacket for FileSearchRequest { + fn write_to_packet(&self, packet: &mut MutPacket) -> io::Result<()> { + try!(packet.write_value(&self.ticket)); + try!(packet.write_value(&self.query)); + Ok(()) + } +} + /*=======* * LOGIN * *=======*/ diff --git a/src/proto/server/response.rs b/src/proto/server/response.rs index 50df9eb..2441237 100644 --- a/src/proto/server/response.rs +++ b/src/proto/server/response.rs @@ -12,6 +12,7 @@ use user; #[derive(Debug)] pub enum ServerResponse { ConnectToPeerResponse(ConnectToPeerResponse), + FileSearchResponse(FileSearchResponse), LoginResponse(LoginResponse), PeerAddressResponse(PeerAddressResponse), PrivilegedUsersResponse(PrivilegedUsersResponse), @@ -42,6 +43,11 @@ impl ReadFromPacket for ServerResponse { try!(packet.read_value()) ), + CODE_FILE_SEARCH => + ServerResponse::FileSearchResponse( + try!(packet.read_value()) + ), + CODE_LOGIN => ServerResponse::LoginResponse( try!(packet.read_value()) @@ -162,6 +168,31 @@ impl ReadFromPacket for ConnectToPeerResponse { } } +/*=============* + * FILE SEARCH * + *=============*/ + +#[derive(Debug)] +pub struct FileSearchResponse { + pub user_name: String, + pub ticket: u32, + pub query: String, +} + +impl ReadFromPacket for FileSearchResponse { + fn read_from_packet(packet: &mut Packet) -> Result { + let user_name = try!(packet.read_value()); + let ticket = try!(packet.read_value()); + let query = try!(packet.read_value()); + + Ok(FileSearchResponse { + user_name: user_name, + ticket: ticket, + query: query, + }) + } +} + /*=======* * LOGIN * *=======*/