From 13b1687a1a8ae01da80949235f08fb027f72df5b Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Thu, 28 Dec 2017 13:20:35 -0500 Subject: [PATCH] Implement Proto{De,En}code for PrivilegedUsersResponse. --- src/proto/server/response.rs | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/proto/server/response.rs b/src/proto/server/response.rs index f4cd0d6..04fbde9 100644 --- a/src/proto/server/response.rs +++ b/src/proto/server/response.rs @@ -126,6 +126,10 @@ impl ProtoEncode for ServerResponse { encoder.encode_u32(CODE_PEER_ADDRESS)?; response.encode(encoder)?; }, + ServerResponse::PrivilegedUsersResponse(ref response) => { + encoder.encode_u32(CODE_PRIVILEGED_USERS)?; + response.encode(encoder)?; + }, _ => { unimplemented!(); }, @@ -162,6 +166,10 @@ impl ProtoDecode for ServerResponse { let response = PeerAddressResponse::decode(decoder)?; ServerResponse::PeerAddressResponse(response) }, + CODE_PRIVILEGED_USERS => { + let response = PrivilegedUsersResponse::decode(decoder)?; + ServerResponse::PrivilegedUsersResponse(response) + }, _ => { return Err(DecodeError::UnknownCodeError(code)); }, @@ -472,7 +480,6 @@ impl ProtoDecode for PeerAddressResponse { } } - /*==================* * PRIVILEGED USERS * *==================*/ @@ -489,6 +496,21 @@ impl ReadFromPacket for PrivilegedUsersResponse { } } +impl ProtoEncode for PrivilegedUsersResponse { + fn encode(&self, encoder: &mut ProtoEncoder) -> Result<(), io::Error> { + encoder.encode_vec(&self.users) + } +} + +impl ProtoDecode for PrivilegedUsersResponse { + fn decode(decoder: &mut ProtoDecoder) -> Result { + let users = decoder.decode_vec::()?; + Ok(Self { + users: users, + }) + } +} + /*===========* * ROOM JOIN * *===========*/ @@ -926,4 +948,15 @@ mod tests { port: 1337, })) } + + #[test] + fn roundtrip_privileged_users() { + roundtrip(ServerResponse::PrivilegedUsersResponse(PrivilegedUsersResponse { + users: vec![ + "alice".to_string(), + "bob".to_string(), + "chris".to_string(), + ], + })) + } }