equal
deleted
inserted
replaced
1 use netbuf; |
1 use netbuf; |
2 use std::{ |
2 use nom::{Err, IResult}; |
3 io::{Read, Result} |
3 use std::io::{Read, Result}; |
4 }; |
|
5 use nom::{ |
|
6 IResult, Err |
|
7 }; |
|
8 |
4 |
9 pub mod messages; |
5 pub mod messages; |
|
6 mod parser; |
10 #[cfg(test)] |
7 #[cfg(test)] |
11 pub mod test; |
8 pub mod test; |
12 mod parser; |
|
13 |
9 |
14 pub struct ProtocolDecoder { |
10 pub struct ProtocolDecoder { |
15 buf: netbuf::Buf, |
11 buf: netbuf::Buf, |
16 consumed: usize, |
12 consumed: usize, |
17 } |
13 } |
32 let parse_result = parser::extract_messages(&self.buf[..]); |
28 let parse_result = parser::extract_messages(&self.buf[..]); |
33 match parse_result { |
29 match parse_result { |
34 Ok((tail, msgs)) => { |
30 Ok((tail, msgs)) => { |
35 self.consumed = self.buf.len() - self.consumed - tail.len(); |
31 self.consumed = self.buf.len() - self.consumed - tail.len(); |
36 msgs |
32 msgs |
37 }, |
33 } |
38 Err(Err::Incomplete(_)) => unreachable!(), |
34 Err(Err::Incomplete(_)) => unreachable!(), |
39 Err(Err::Error(_)) | Err(Err::Failure(_)) => unreachable!(), |
35 Err(Err::Error(_)) | Err(Err::Failure(_)) => unreachable!(), |
40 } |
36 } |
41 } |
37 } |
42 |
38 |