|
|
|
@ -117,75 +117,78 @@ impl ReadFromPacket for ServerResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for ServerResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
match *self {
|
|
|
|
ServerResponse::ConnectToPeerResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_CONNECT_TO_PEER)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::FileSearchResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_FILE_SEARCH)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::LoginResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_LOGIN)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::ParentMinSpeedResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_PARENT_MIN_SPEED)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::ParentSpeedRatioResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_PARENT_SPEED_RATIO)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::PeerAddressResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_PEER_ADDRESS)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::PrivilegedUsersResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_PRIVILEGED_USERS)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::RoomJoinResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_ROOM_JOIN)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::RoomLeaveResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_ROOM_LEAVE)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::RoomListResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_ROOM_LIST)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::RoomMessageResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_ROOM_MESSAGE)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::RoomTickersResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_ROOM_TICKERS)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::RoomUserJoinedResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_ROOM_USER_JOINED)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::RoomUserLeftResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_ROOM_USER_LEFT)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::UserInfoResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_USER_INFO)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::UserStatusResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_USER_STATUS)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
ServerResponse::WishlistIntervalResponse(ref response) => {
|
|
|
|
encoder.encode_u32(CODE_WISHLIST_INTERVAL)?;
|
|
|
|
response.encode(encoder)?;
|
|
|
|
response.encode_to(encoder)?;
|
|
|
|
}
|
|
|
|
_ => {
|
|
|
|
unimplemented!();
|
|
|
|
@ -315,7 +318,10 @@ impl ReadFromPacket for ConnectToPeerResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for ConnectToPeerResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode(&self.user_name)?;
|
|
|
|
encoder.encode(&self.connection_type)?;
|
|
|
|
encoder.encode(&self.ip)?;
|
|
|
|
@ -371,7 +377,10 @@ impl ReadFromPacket for FileSearchResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for FileSearchResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode_string(&self.user_name)?;
|
|
|
|
encoder.encode_u32(self.ticket)?;
|
|
|
|
encoder.encode_string(&self.query)
|
|
|
|
@ -434,7 +443,10 @@ impl ReadFromPacket for LoginResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for LoginResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
match *self {
|
|
|
|
LoginResponse::LoginOk {
|
|
|
|
ref motd,
|
|
|
|
@ -496,7 +508,10 @@ impl ReadFromPacket for ParentMinSpeedResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for ParentMinSpeedResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode_u32(self.value)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -525,7 +540,10 @@ impl ReadFromPacket for ParentSpeedRatioResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for ParentSpeedRatioResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode_u32(self.value)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -554,12 +572,19 @@ impl ReadFromPacket for PeerAddressResponse { |
|
|
|
let ip = packet.read_value()?;
|
|
|
|
let port = packet.read_value()?;
|
|
|
|
|
|
|
|
Ok(PeerAddressResponse { user_name, ip, port })
|
|
|
|
Ok(PeerAddressResponse {
|
|
|
|
user_name,
|
|
|
|
ip,
|
|
|
|
port,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for PeerAddressResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode(&self.user_name)?;
|
|
|
|
encoder.encode(&self.ip)?;
|
|
|
|
encoder.encode_u16(self.port)
|
|
|
|
@ -571,7 +596,11 @@ impl ValueDecode for PeerAddressResponse { |
|
|
|
let user_name = decoder.decode()?;
|
|
|
|
let ip = decoder.decode()?;
|
|
|
|
let port = decoder.decode()?;
|
|
|
|
Ok(PeerAddressResponse { user_name, ip, port })
|
|
|
|
Ok(PeerAddressResponse {
|
|
|
|
user_name,
|
|
|
|
ip,
|
|
|
|
port,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@ -592,7 +621,10 @@ impl ReadFromPacket for PrivilegedUsersResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for PrivilegedUsersResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode(&self.users)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -755,7 +787,10 @@ fn build_user( |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for UserInfo {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode_u32(self.average_speed)?;
|
|
|
|
encoder.encode_u32(self.num_downloads)?;
|
|
|
|
encoder.encode_u32(self.unknown)?;
|
|
|
|
@ -782,7 +817,10 @@ impl ValueDecode for UserInfo { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for RoomJoinResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
let mut user_names = vec![];
|
|
|
|
let mut user_statuses = vec![];
|
|
|
|
let mut user_infos = vec![];
|
|
|
|
@ -891,7 +929,10 @@ impl ReadFromPacket for RoomLeaveResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for RoomLeaveResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode_string(&self.room_name)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -1019,7 +1060,10 @@ impl RoomListResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for RoomListResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
Self::encode_rooms(&self.rooms, encoder)?;
|
|
|
|
Self::encode_rooms(&self.owned_private_rooms, encoder)?;
|
|
|
|
Self::encode_rooms(&self.other_private_rooms, encoder)?;
|
|
|
|
@ -1067,7 +1111,10 @@ impl ReadFromPacket for RoomMessageResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for RoomMessageResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode_string(&self.room_name)?;
|
|
|
|
encoder.encode_string(&self.user_name)?;
|
|
|
|
encoder.encode_string(&self.message)
|
|
|
|
@ -1114,7 +1161,10 @@ impl ReadFromPacket for RoomTickersResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for RoomTickersResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode_string(&self.room_name)?;
|
|
|
|
encoder.encode(&self.tickers)
|
|
|
|
}
|
|
|
|
@ -1172,11 +1222,14 @@ impl ReadFromPacket for RoomUserJoinedResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for RoomUserJoinedResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode_string(&self.room_name)?;
|
|
|
|
encoder.encode_string(&self.user.name)?;
|
|
|
|
self.user.status.encode(encoder)?;
|
|
|
|
UserInfo::from_user(&self.user).encode(encoder)?;
|
|
|
|
self.user.status.encode_to(encoder)?;
|
|
|
|
UserInfo::from_user(&self.user).encode_to(encoder)?;
|
|
|
|
encoder.encode_u32(self.user.num_free_slots as u32)?;
|
|
|
|
encoder.encode_string(&self.user.country)
|
|
|
|
}
|
|
|
|
@ -1219,7 +1272,10 @@ impl ReadFromPacket for RoomUserLeftResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for RoomUserLeftResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode_string(&self.room_name)?;
|
|
|
|
encoder.encode_string(&self.user_name)
|
|
|
|
}
|
|
|
|
@ -1267,7 +1323,10 @@ impl ReadFromPacket for UserInfoResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for UserInfoResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode_string(&self.user_name)?;
|
|
|
|
encoder.encode_u32(self.average_speed as u32)?;
|
|
|
|
encoder.encode_u32(self.num_downloads as u32)?;
|
|
|
|
@ -1318,9 +1377,12 @@ impl ReadFromPacket for UserStatusResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for UserStatusResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode_string(&self.user_name)?;
|
|
|
|
self.status.encode(encoder)?;
|
|
|
|
self.status.encode_to(encoder)?;
|
|
|
|
encoder.encode_bool(self.is_privileged)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -1355,7 +1417,10 @@ impl ReadFromPacket for WishlistIntervalResponse { |
|
|
|
}
|
|
|
|
|
|
|
|
impl ValueEncode for WishlistIntervalResponse {
|
|
|
|
fn encode(&self, encoder: &mut ValueEncoder) -> Result<(), ValueEncodeError> {
|
|
|
|
fn encode_to(
|
|
|
|
&self,
|
|
|
|
encoder: &mut ValueEncoder,
|
|
|
|
) -> Result<(), ValueEncodeError> {
|
|
|
|
encoder.encode_u32(self.seconds)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|