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)?;
response.encode(encoder)?;
}
ServerResponse::RoomTickersResponse(ref response) => {
encoder.encode_u32(CODE_ROOM_TICKERS)?;
response.encode(encoder)?;
}
_ => {
unimplemented!();
}
@ -201,6 +205,10 @@ impl ProtoDecode for ServerResponse {
let response = RoomMessageResponse::decode(decoder)?;
ServerResponse::RoomMessageResponse(response)
}
CODE_ROOM_TICKERS => {
let response = RoomTickersResponse::decode(decoder)?;
ServerResponse::RoomTickersResponse(response)
}
_ => {
return Err(DecodeError::UnknownCodeError(code));
}
@ -998,7 +1006,7 @@ impl ProtoDecode for RoomMessageResponse {
}
/*==============*
* ROOM MESSAGE *
* ROOM TICKERS *
*==============*/
#[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 *
*==================*/
@ -1320,4 +1346,15 @@ mod tests {
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