equal
deleted
inserted
replaced
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); |