From 5dd29e2b3c3163e579a05a5a03fb56c5e582ead5 Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Thu, 28 Dec 2017 13:16:02 -0500 Subject: [PATCH] Implement Proto{De,En}code for PeerAddressResponse. --- src/proto/server/response.rs | 39 ++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/proto/server/response.rs b/src/proto/server/response.rs index 7036868..f4cd0d6 100644 --- a/src/proto/server/response.rs +++ b/src/proto/server/response.rs @@ -122,6 +122,10 @@ impl ProtoEncode for ServerResponse { encoder.encode_u32(CODE_PARENT_SPEED_RATIO)?; response.encode(encoder)?; }, + ServerResponse::PeerAddressResponse(ref response) => { + encoder.encode_u32(CODE_PEER_ADDRESS)?; + response.encode(encoder)?; + }, _ => { unimplemented!(); }, @@ -154,6 +158,10 @@ impl ProtoDecode for ServerResponse { let response = ParentSpeedRatioResponse::decode(decoder)?; ServerResponse::ParentSpeedRatioResponse(response) }, + CODE_PEER_ADDRESS => { + let response = PeerAddressResponse::decode(decoder)?; + ServerResponse::PeerAddressResponse(response) + }, _ => { return Err(DecodeError::UnknownCodeError(code)); }, @@ -443,6 +451,28 @@ impl ReadFromPacket for PeerAddressResponse { } } +impl ProtoEncode for PeerAddressResponse { + fn encode(&self, encoder: &mut ProtoEncoder) -> Result<(), io::Error> { + encoder.encode_string(&self.username)?; + encoder.encode_ipv4_addr(self.ip)?; + encoder.encode_u16(self.port) + } +} + +impl ProtoDecode for PeerAddressResponse { + fn decode(decoder: &mut ProtoDecoder) -> Result { + let username = decoder.decode_string()?; + let ip = decoder.decode_ipv4_addr()?; + let port = decoder.decode_u16()?; + Ok(Self { + username: username, + ip: ip, + port: port, + }) + } +} + + /*==================* * PRIVILEGED USERS * *==================*/ @@ -887,4 +917,13 @@ mod tests { value: 1337, })) } + + #[test] + fn roundtrip_peer_address() { + roundtrip(ServerResponse::PeerAddressResponse(PeerAddressResponse { + username: "alice".to_string(), + ip: net::Ipv4Addr::new(127, 0, 0, 1), + port: 1337, + })) + } }