|
|
@ -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(),
|
|
|
|
|
|
}))
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|