From b5de269c8fd72ffe8aaa11cd8c7f1d7e15639008 Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Sat, 6 Jan 2018 12:05:22 -0500 Subject: [PATCH] Implement Proto{De,En}code for RoomLeaveResponse. --- src/proto/server/response.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/proto/server/response.rs b/src/proto/server/response.rs index 9713f09..5d71b82 100644 --- a/src/proto/server/response.rs +++ b/src/proto/server/response.rs @@ -133,6 +133,10 @@ impl ProtoEncode for ServerResponse { encoder.encode_u32(CODE_ROOM_JOIN)?; response.encode(encoder)?; } + ServerResponse::RoomLeaveResponse(ref response) => { + encoder.encode_u32(CODE_ROOM_LEAVE)?; + response.encode(encoder)?; + } _ => { unimplemented!(); } @@ -177,6 +181,10 @@ impl ProtoDecode for ServerResponse { let response = RoomJoinResponse::decode(decoder)?; ServerResponse::RoomJoinResponse(response) } + CODE_ROOM_LEAVE => { + let response = RoomLeaveResponse::decode(decoder)?; + ServerResponse::RoomLeaveResponse(response) + } _ => { return Err(DecodeError::UnknownCodeError(code)); } @@ -787,6 +795,19 @@ impl ReadFromPacket for RoomLeaveResponse { } } +impl ProtoEncode for RoomLeaveResponse { + fn encode(&self, encoder: &mut ProtoEncoder) -> io::Result<()> { + encoder.encode_string(&self.room_name) + } +} + +impl ProtoDecode for RoomLeaveResponse { + fn decode(decoder: &mut ProtoDecoder) -> Result { + let room_name = decoder.decode_string()?; + Ok(Self { room_name: room_name }) + } +} + /*===========* * ROOM LIST * *===========*/ @@ -1163,4 +1184,11 @@ mod tests { operators: vec![], })) } + + #[test] + fn roundtrip_room_leave() { + roundtrip(ServerResponse::RoomLeaveResponse(RoomLeaveResponse { + room_name: "red".to_string(), + })) + } }