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)?; encoder.encode_u32(CODE_ROOM_LIST)?;
response.encode(encoder)?; response.encode(encoder)?;
} }
ServerResponse::RoomMessageResponse(ref response) => {
encoder.encode_u32(CODE_ROOM_MESSAGE)?;
response.encode(encoder)?;
}
_ => { _ => {
unimplemented!(); unimplemented!();
} }
@ -193,6 +197,10 @@ impl ProtoDecode for ServerResponse {
let response = RoomListResponse::decode(decoder)?; let response = RoomListResponse::decode(decoder)?;
ServerResponse::RoomListResponse(response) ServerResponse::RoomListResponse(response)
} }
CODE_ROOM_MESSAGE => {
let response = RoomMessageResponse::decode(decoder)?;
ServerResponse::RoomMessageResponse(response)
}
_ => { _ => {
return Err(DecodeError::UnknownCodeError(code)); 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 * * ROOM MESSAGE *
*==============*/ *==============*/
@ -1282,4 +1311,13 @@ mod tests {
operated_private_room_names: vec!["brown".to_string(), "pink".to_string()], 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