|
|
@ -14,6 +14,7 @@ const MAX_PORT: u32 = (1 << 16) - 1; |
|
|
pub enum ServerResponse {
|
|
|
pub enum ServerResponse {
|
|
|
LoginResponse(LoginResponse),
|
|
|
LoginResponse(LoginResponse),
|
|
|
ConnectToPeerResponse(ConnectToPeerResponse),
|
|
|
ConnectToPeerResponse(ConnectToPeerResponse),
|
|
|
|
|
|
PeerAddressResponse(PeerAddressResponse),
|
|
|
PrivilegedUsersResponse(PrivilegedUsersResponse),
|
|
|
PrivilegedUsersResponse(PrivilegedUsersResponse),
|
|
|
RoomListResponse(RoomListResponse),
|
|
|
RoomListResponse(RoomListResponse),
|
|
|
WishlistIntervalResponse(WishlistIntervalResponse),
|
|
|
WishlistIntervalResponse(WishlistIntervalResponse),
|
|
|
@ -39,6 +40,11 @@ impl ServerResponse { |
|
|
try!(LoginResponse::from_packet(&mut packet))
|
|
|
try!(LoginResponse::from_packet(&mut packet))
|
|
|
),
|
|
|
),
|
|
|
|
|
|
|
|
|
|
|
|
CODE_PEER_ADDRESS =>
|
|
|
|
|
|
ServerResponse::PeerAddressResponse(
|
|
|
|
|
|
try!(PeerAddressResponse::from_packet(&mut packet))
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
CODE_PRIVILEGED_USERS =>
|
|
|
CODE_PRIVILEGED_USERS =>
|
|
|
ServerResponse::PrivilegedUsersResponse(
|
|
|
ServerResponse::PrivilegedUsersResponse(
|
|
|
try!(PrivilegedUsersResponse::from_packet(&mut packet))
|
|
|
try!(PrivilegedUsersResponse::from_packet(&mut packet))
|
|
|
@ -192,6 +198,34 @@ impl ParentSpeedRatioResponse { |
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*==============*
|
|
|
|
|
|
* PEER ADDRESS *
|
|
|
|
|
|
*==============*/
|
|
|
|
|
|
|
|
|
|
|
|
#[derive(Debug)]
|
|
|
|
|
|
pub struct PeerAddressResponse {
|
|
|
|
|
|
username: String,
|
|
|
|
|
|
ip: net::Ipv4Addr,
|
|
|
|
|
|
port: u16,
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl PeerAddressResponse {
|
|
|
|
|
|
fn from_packet(packet: &mut Packet) -> io::Result<Self> {
|
|
|
|
|
|
let username = try!(packet.read_str());
|
|
|
|
|
|
let ip = net::Ipv4Addr::from(try!(packet.read_uint()));
|
|
|
|
|
|
let port = try!(packet.read_uint());
|
|
|
|
|
|
if port > MAX_PORT {
|
|
|
|
|
|
return Err(
|
|
|
|
|
|
io::Error::new(io::ErrorKind::Other, "Invalid port number"));
|
|
|
|
|
|
}
|
|
|
|
|
|
Ok(PeerAddressResponse {
|
|
|
|
|
|
username: username,
|
|
|
|
|
|
ip: ip,
|
|
|
|
|
|
port: port as u16,
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
/*==================*
|
|
|
/*==================*
|
|
|
* PRIVILEGED USERS *
|
|
|
* PRIVILEGED USERS *
|
|
|
*==================*/
|
|
|
*==================*/
|
|
|
|