Browse Source

Add ConnectToPeerResponse.

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

+ 50
- 0
src/proto/server.rs View File

@ -6,7 +6,10 @@ use crypto::digest::Digest;
use super::Packet; use super::Packet;
const MAX_PORT: u32 = 1 << 16;
const CODE_LOGIN: u32 = 1; const CODE_LOGIN: u32 = 1;
const CODE_CONNECT_TO_PEER: u32 = 18;
const CODE_ROOM_LIST: u32 = 64; const CODE_ROOM_LIST: u32 = 64;
const CODE_PRIVILEGED_USERS: u32 = 69; const CODE_PRIVILEGED_USERS: u32 = 69;
const CODE_PARENT_MIN_SPEED: u32 = 83; const CODE_PARENT_MIN_SPEED: u32 = 83;
@ -48,6 +51,7 @@ impl ServerRequest {
#[derive(Debug)] #[derive(Debug)]
pub enum ServerResponse { pub enum ServerResponse {
LoginResponse(LoginResponse), LoginResponse(LoginResponse),
ConnectToPeerResponse(ConnectToPeerResponse),
PrivilegedUsersResponse(PrivilegedUsersResponse), PrivilegedUsersResponse(PrivilegedUsersResponse),
RoomListResponse(RoomListResponse), RoomListResponse(RoomListResponse),
WishlistIntervalResponse(WishlistIntervalResponse), WishlistIntervalResponse(WishlistIntervalResponse),
@ -68,6 +72,11 @@ impl ServerResponse {
try!(LoginResponse::from_packet(&mut packet)) try!(LoginResponse::from_packet(&mut packet))
), ),
CODE_CONNECT_TO_PEER =>
ServerResponse::ConnectToPeerResponse(
try!(ConnectToPeerResponse::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))
@ -349,3 +358,44 @@ impl PrivilegedUsersResponse {
Ok(response) Ok(response)
} }
} }
/*=================*
* CONNECT TO PEER *
*=================*/
#[derive(Debug)]
pub struct ConnectToPeerResponse {
pub username: String,
pub connection_type: String,
pub ip: net::Ipv4Addr,
pub port: u16,
pub token: u32,
pub is_privileged: bool,
}
impl ConnectToPeerResponse {
fn from_packet(packet: &mut Packet) -> io::Result<Self> {
let username = try!(packet.read_str());
let connection_type = 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"));
}
let token = try!(packet.read_uint());
let is_privileged = try!(packet.read_bool());
Ok(ConnectToPeerResponse {
username: username,
connection_type: connection_type,
ip: ip,
port: port as u16,
token: token,
is_privileged: is_privileged,
})
}
}

Loading…
Cancel
Save