From c779780eacdaa9dcee4cc94442986abfb392731f Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Fri, 19 Feb 2016 13:42:15 +0100 Subject: [PATCH] Add WriteToPacket trait. --- src/proto/server.rs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/proto/server.rs b/src/proto/server.rs index 1f33070..9f166ce 100644 --- a/src/proto/server.rs +++ b/src/proto/server.rs @@ -18,16 +18,19 @@ pub enum ServerRequest { impl ServerRequest { pub fn to_packet(&self) -> io::Result { - match *self { - ServerRequest::LoginRequest(ref request) => { - let mut packet = Packet::new(CODE_LOGIN); - try!(request.write_to_packet(&mut packet)); - Ok(packet) - }, - } + let (mut packet, request): (Packet, &WriteToPacket) = match *self { + ServerRequest::LoginRequest(ref request) => + (Packet::new(CODE_LOGIN), request), + }; + try!(request.write_to_packet(&mut packet)); + Ok(packet) } } +trait WriteToPacket { + fn write_to_packet(&self, &mut Packet) -> io::Result<()>; +} + pub enum ServerResponse { LoginResponse(LoginResponse), UnknownResponse(u32, Packet), @@ -72,8 +75,10 @@ impl LoginRequest { Err("Empty password") } } +} - pub fn write_to_packet(&self, packet: &mut Packet) -> io::Result<()> { +impl WriteToPacket for LoginRequest { + fn write_to_packet(&self, packet: &mut Packet) -> io::Result<()> { let userpass = String::new() + &self.username + &self.password; let userpass_md5 = md5_str(&userpass);