gameServer2/src/protocol/mod.rs
changeset 13438 da71e0d88a1c
parent 13416 cdf69667593b
child 13713 59ea2403f62d
equal deleted inserted replaced
13437:a0c3431f60ac 13438:da71e0d88a1c
     1 use netbuf;
     1 use netbuf;
     2 use std::io::Read;
     2 use std::{
     3 use std::io::Result;
     3     io::{Read, Result}
     4 use nom::IResult;
     4 };
       
     5 use nom::{
       
     6     IResult, Err
       
     7 };
     5 
     8 
     6 pub mod messages;
     9 pub mod messages;
     7 pub mod test;
    10 pub mod test;
     8 mod parser;
    11 mod parser;
     9 
    12 
    25     }
    28     }
    26 
    29 
    27     pub fn extract_messages(&mut self) -> Vec<messages::HWProtocolMessage> {
    30     pub fn extract_messages(&mut self) -> Vec<messages::HWProtocolMessage> {
    28         let parse_result = parser::extract_messages(&self.buf[..]);
    31         let parse_result = parser::extract_messages(&self.buf[..]);
    29         match parse_result {
    32         match parse_result {
    30             IResult::Done(tail, msgs) => {
    33             Ok((tail, msgs)) => {
    31                 self.consumed = self.buf.len() - self.consumed - tail.len();
    34                 self.consumed = self.buf.len() - self.consumed - tail.len();
    32                 msgs
    35                 msgs
    33             },
    36             },
    34             IResult::Incomplete(_) => unreachable!(),
    37             Err(Err::Incomplete(_)) => unreachable!(),
    35             IResult::Error(_) => unreachable!(),
    38             Err(Err::Error(_)) | Err(Err::Failure(_)) => unreachable!(),
    36         }
    39         }
    37     }
    40     }
    38 
    41 
    39     pub fn sweep(&mut self) {
    42     pub fn sweep(&mut self) {
    40         self.buf.consume(self.consumed);
    43         self.buf.consume(self.consumed);