Browse Source

Implement Proto{De,En}code for RoomTickersResponse.

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

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

@ -145,6 +145,10 @@ impl ProtoEncode for ServerResponse {
encoder.encode_u32(CODE_ROOM_MESSAGE)?; encoder.encode_u32(CODE_ROOM_MESSAGE)?;
response.encode(encoder)?; response.encode(encoder)?;
} }
ServerResponse::RoomTickersResponse(ref response) => {
encoder.encode_u32(CODE_ROOM_TICKERS)?;
response.encode(encoder)?;
}
_ => { _ => {
unimplemented!(); unimplemented!();
} }
@ -201,6 +205,10 @@ impl ProtoDecode for ServerResponse {
let response = RoomMessageResponse::decode(decoder)?; let response = RoomMessageResponse::decode(decoder)?;
ServerResponse::RoomMessageResponse(response) ServerResponse::RoomMessageResponse(response)
} }
CODE_ROOM_TICKERS => {
let response = RoomTickersResponse::decode(decoder)?;
ServerResponse::RoomTickersResponse(response)
}
_ => { _ => {
return Err(DecodeError::UnknownCodeError(code)); return Err(DecodeError::UnknownCodeError(code));
} }
@ -998,7 +1006,7 @@ impl ProtoDecode for RoomMessageResponse {
} }
/*==============* /*==============*
* ROOM MESSAGE *
* ROOM TICKERS *
*==============*/ *==============*/
#[derive(Debug, Eq, PartialEq)] #[derive(Debug, Eq, PartialEq)]
@ -1026,6 +1034,24 @@ impl ReadFromPacket for RoomTickersResponse {
} }
} }
impl ProtoEncode for RoomTickersResponse {
fn encode(&self, encoder: &mut ProtoEncoder) -> io::Result<()> {
encoder.encode_string(&self.room_name)?;
encoder.encode_vec(&self.tickers)
}
}
impl ProtoDecode for RoomTickersResponse {
fn decode(decoder: &mut ProtoDecoder) -> Result<Self, DecodeError> {
let room_name = decoder.decode_string()?;
let tickers = decoder.decode_vec::<(String, String)>()?;
Ok(Self {
room_name: room_name,
tickers: tickers,
})
}
}
/*==================* /*==================*
* ROOM USER JOINED * * ROOM USER JOINED *
*==================*/ *==================*/
@ -1320,4 +1346,15 @@ mod tests {
message: "hello world!".to_string(), message: "hello world!".to_string(),
})) }))
} }
#[test]
fn roundtrip_room_tickers() {
roundtrip(ServerResponse::RoomTickersResponse(RoomTickersResponse {
room_name: "red".to_string(),
tickers: vec![
("alice".to_string(), "hello world!".to_string()),
("bob".to_string(), "hi alice :)".to_string()),
],
}))
}
} }

Loading…
Cancel
Save