Browse Source

Add PeerAddressResponse.

wip
Titouan Rigoudy 9 years ago
parent
commit
5cab350f78
1 changed files with 34 additions and 0 deletions
  1. +34
    -0
      src/proto/server/response.rs

+ 34
- 0
src/proto/server/response.rs View File

@ -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 *
*==================*/ *==================*/


Loading…
Cancel
Save