Browse Source

Add UserJoinedRoomResponse, still unhandled.

wip
Titouan Rigoudy 9 years ago
parent
commit
f0a205a49b
2 changed files with 56 additions and 2 deletions
  1. +1
    -0
      src/proto/server/constants.rs
  2. +55
    -2
      src/proto/server/response.rs

+ 1
- 0
src/proto/server/constants.rs View File

@ -2,6 +2,7 @@ pub const CODE_LOGIN: u32 = 1;
pub const CODE_SET_LISTEN_PORT: u32 = 2; pub const CODE_SET_LISTEN_PORT: u32 = 2;
pub const CODE_PEER_ADDRESS: u32 = 3; pub const CODE_PEER_ADDRESS: u32 = 3;
pub const CODE_JOIN_ROOM: u32 = 14; 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_CONNECT_TO_PEER: u32 = 18;
pub const CODE_ROOM_LIST: u32 = 64; pub const CODE_ROOM_LIST: u32 = 64;
pub const CODE_PRIVILEGED_USERS: u32 = 69; pub const CODE_PRIVILEGED_USERS: u32 = 69;


+ 55
- 2
src/proto/server/response.rs View File

@ -27,6 +27,7 @@ pub enum ServerResponse {
PeerAddressResponse(PeerAddressResponse), PeerAddressResponse(PeerAddressResponse),
PrivilegedUsersResponse(PrivilegedUsersResponse), PrivilegedUsersResponse(PrivilegedUsersResponse),
RoomListResponse(RoomListResponse), RoomListResponse(RoomListResponse),
UserJoinedRoomResponse(UserJoinedRoomResponse),
WishlistIntervalResponse(WishlistIntervalResponse), WishlistIntervalResponse(WishlistIntervalResponse),
// Unknown purpose // Unknown purpose
@ -70,6 +71,11 @@ impl FromPacket for ServerResponse {
try!(RoomListResponse::from_packet(packet)) try!(RoomListResponse::from_packet(packet))
), ),
CODE_USER_JOINED_ROOM =>
ServerResponse::UserJoinedRoomResponse(
try!(UserJoinedRoomResponse::from_packet(packet))
),
CODE_WISHLIST_INTERVAL => CODE_WISHLIST_INTERVAL =>
ServerResponse::WishlistIntervalResponse( ServerResponse::WishlistIntervalResponse(
try!(WishlistIntervalResponse::from_packet(packet)) try!(WishlistIntervalResponse::from_packet(packet))
@ -425,8 +431,10 @@ impl RoomListResponse {
let num_user_counts_res: result::Result<usize> = let num_user_counts_res: result::Result<usize> =
packet.read_array_with(|packet, i| { packet.read_array_with(|packet, i| {
let user_count = try!(packet.read_uint());
rooms[original_rooms_len+i].1 = user_count;
let index = original_rooms_len + i;
if let Some(&mut (_, ref mut count)) = rooms.get_mut(index) {
*count = try!(packet.read_uint());
}
Ok(()) Ok(())
}); });
let num_user_counts = try!(num_user_counts_res); let num_user_counts = try!(num_user_counts_res);
@ -440,6 +448,51 @@ impl RoomListResponse {
} }
} }
/*==================*
* USER JOINED ROOM *
*==================*/
#[derive(Debug)]
pub struct UserJoinedRoomResponse {
room_name: String,
user_name: String,
user: user::User,
}
impl FromPacket for UserJoinedRoomResponse {
fn from_packet(packet: &mut Packet) -> result::Result<Self> {
let room_name = try!(packet.read_str());
let user_name = try!(packet.read_str());
let status_u32 = try!(packet.read_uint());
let status = try!(user::Status::from_u32(status_u32));
let average_speed = try!(packet.read_uint()) as usize;
let num_downloads = try!(packet.read_uint()) as usize;
let unknown = try!(packet.read_uint()) as usize;
let num_files = try!(packet.read_uint()) as usize;
let num_folders = try!(packet.read_uint()) as usize;
let num_free_slots = try!(packet.read_uint()) as usize;
let country = try!(packet.read_str());
Ok(UserJoinedRoomResponse {
room_name: room_name,
user_name: user_name,
user: user::User {
status: status,
average_speed: average_speed,
num_downloads: num_downloads,
unknown: unknown,
num_files: num_files,
num_folders: num_folders,
num_free_slots: num_free_slots,
country: Some(country),
}
})
}
}
/*===================* /*===================*
* WISHLIST INTERVAL * * WISHLIST INTERVAL *
*===================*/ *===================*/


Loading…
Cancel
Save