# HG changeset patch # User unc0rr # Date 1483391987 -10800 # Node ID 07972a8c243321c81943e63a2cfc8830116a880a # Parent f50876f3eff8de03cd55326c9c9f68a221ce913b - Start protocol parser implementation - Small fixes diff -r f50876f3eff8 -r 07972a8c2433 gameServer2/src/main.rs --- a/gameServer2/src/main.rs Mon Jan 02 00:16:22 2017 +0300 +++ b/gameServer2/src/main.rs Tue Jan 03 00:19:47 2017 +0300 @@ -11,6 +11,7 @@ mod utils; mod server; +mod protocol; fn main() { println!("Hedgewars game server, protocol {}", utils::PROTOCOL_VERSION); diff -r f50876f3eff8 -r 07972a8c2433 gameServer2/src/protocol.rs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gameServer2/src/protocol.rs Tue Jan 03 00:19:47 2017 +0300 @@ -0,0 +1,24 @@ +use netbuf; +use std::io::Read; +use std::io::Result; + + +pub struct FrameDecoder { + buf: netbuf::Buf, +} + +impl FrameDecoder { + pub fn new() -> FrameDecoder { + FrameDecoder { + buf: netbuf::Buf::new() + } + } + + pub fn read_from(&mut self, stream: &mut R) -> Result { + self.buf.read_from(stream) + } + + pub fn extract_messages(&mut self) -> &[u8] { + &self.buf[..] + } +} diff -r f50876f3eff8 -r 07972a8c2433 gameServer2/src/server/client.rs --- a/gameServer2/src/server/client.rs Mon Jan 02 00:16:22 2017 +0300 +++ b/gameServer2/src/server/client.rs Tue Jan 03 00:19:47 2017 +0300 @@ -6,10 +6,11 @@ use netbuf; use utils; +use protocol::FrameDecoder; pub struct HWClient { sock: TcpStream, - buf_in: netbuf::Buf, + decoder: FrameDecoder, buf_out: netbuf::Buf } @@ -17,7 +18,7 @@ pub fn new(sock: TcpStream) -> HWClient { HWClient { sock: sock, - buf_in: netbuf::Buf::new(), + decoder: FrameDecoder::new(), buf_out: netbuf::Buf::new(), } } @@ -43,8 +44,9 @@ } pub fn readable(&mut self, poll: &Poll) -> io::Result<()> { - self.buf_in.read_from(&mut self.sock)?; - println!("Incoming buffer size: {}", self.buf_in.len()); + let v = self.decoder.read_from(&mut self.sock)?; + self.decoder.extract_messages(); + println!("Read {} bytes", v); Ok(()) } diff -r f50876f3eff8 -r 07972a8c2433 gameServer2/src/server/server.rs --- a/gameServer2/src/server/server.rs Mon Jan 02 00:16:22 2017 +0300 +++ b/gameServer2/src/server/server.rs Tue Jan 03 00:19:47 2017 +0300 @@ -31,7 +31,7 @@ } pub fn accept(&mut self, poll: &Poll) -> io::Result<()> { - let (sock, addr) = self.listener.accept().unwrap(); + let (sock, addr) = self.listener.accept()?; println!("Connected: {}", addr); let client = HWClient::new(sock);