Browse Source

Implement Proto{De,En}code for RoomMessageResponse.

wip
Titouan Rigoudy 7 years ago
parent
commit
83a1364d6d
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

@ -141,6 +141,10 @@ impl ProtoEncode for ServerResponse {
encoder.encode_u32(CODE_ROOM_LIST)?;
response.encode(encoder)?;
}
ServerResponse::RoomMessageResponse(ref response) => {
encoder.encode_u32(CODE_ROOM_MESSAGE)?;
response.encode(encoder)?;
}
_ => {
unimplemented!();
}
@ -193,6 +197,10 @@ impl ProtoDecode for ServerResponse {
let response = RoomListResponse::decode(decoder)?;
ServerResponse::RoomListResponse(response)
}
CODE_ROOM_MESSAGE => {
let response = RoomMessageResponse::decode(decoder)?;
ServerResponse::RoomMessageResponse(response)
}
_ => {
return Err(DecodeError::UnknownCodeError(code));
}
@ -968,6 +976,27 @@ impl ReadFromPacket for RoomMessageResponse {
}
}
impl ProtoEncode for RoomMessageResponse {
fn encode(&self, encoder: &mut ProtoEncoder) -> io::Result<()> {
encoder.encode_string(&self.room_name)?;
encoder.encode_string(&self.user_name)?;
encoder.encode_string(&self.message)
}
}
impl ProtoDecode for RoomMessageResponse {
fn decode(decoder: &mut ProtoDecoder) -> Result<Self, DecodeError> {
let room_name = decoder.decode_string()?;
let user_name = decoder.decode_string()?;
let message = decoder.decode_string()?;
Ok(Self {
room_name: room_name,
user_name: user_name,
message: message,
})
}
}
/*==============*
* ROOM MESSAGE *
*==============*/
@ -1282,4 +1311,13 @@ mod tests {
operated_private_room_names: vec!["brown".to_string(), "pink".to_string()],
}))
}
#[test]
fn roundtrip_room_message() {
roundtrip(ServerResponse::RoomMessageResponse(RoomMessageResponse {
room_name: "red".to_string(),
user_name: "alice".to_string(),
message: "hello world!".to_string(),
}))
}
}

Loading…
Cancel
Save