Browse Source

Implement Proto{De,En}code for UserStatusResponse.

wip
Titouan Rigoudy 7 years ago
parent
commit
d3ce706db6
1 changed files with 38 additions and 0 deletions
  1. +38
    -0
      src/proto/server/response.rs

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

@ -161,6 +161,10 @@ impl ProtoEncode for ServerResponse {
encoder.encode_u32(CODE_USER_INFO)?;
response.encode(encoder)?;
}
ServerResponse::UserStatusResponse(ref response) => {
encoder.encode_u32(CODE_USER_STATUS)?;
response.encode(encoder)?;
}
_ => {
unimplemented!();
}
@ -233,6 +237,10 @@ impl ProtoDecode for ServerResponse {
let response = UserInfoResponse::decode(decoder)?;
ServerResponse::UserInfoResponse(response)
}
CODE_USER_STATUS => {
let response = UserStatusResponse::decode(decoder)?;
ServerResponse::UserStatusResponse(response)
}
_ => {
return Err(DecodeError::UnknownCodeError(code));
}
@ -1261,6 +1269,27 @@ impl ReadFromPacket for UserStatusResponse {
}
}
impl ProtoEncode for UserStatusResponse {
fn encode(&self, encoder: &mut ProtoEncoder) -> io::Result<()> {
encoder.encode_string(&self.user_name)?;
self.status.encode(encoder)?;
encoder.encode_bool(self.is_privileged)
}
}
impl ProtoDecode for UserStatusResponse {
fn decode(decoder: &mut ProtoDecoder) -> Result<Self, DecodeError> {
let user_name = decoder.decode_string()?;
let status = UserStatus::decode(decoder)?;
let is_privileged = decoder.decode_bool()?;
Ok(Self {
user_name,
status,
is_privileged,
})
}
}
/*===================*
* WISHLIST INTERVAL *
*===================*/
@ -1487,4 +1516,13 @@ mod tests {
num_folders: 1003,
}))
}
#[test]
fn roundtrip_user_status() {
roundtrip(ServerResponse::UserStatusResponse(UserStatusResponse {
user_name: "alice".to_string(),
status: UserStatus::Offline,
is_privileged: true,
}))
}
}

Loading…
Cancel
Save