mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 18:24:05 +02:00
expose stop packet
This commit is contained in:
parent
d3cbe134bc
commit
c1d023f85c
2 changed files with 9 additions and 5 deletions
|
|
@ -43,7 +43,7 @@ impl MessageHandler for NullHandler {
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct DemoHandler<'a, T: MessageHandler> {
|
pub struct DemoHandler<'a, T: MessageHandler> {
|
||||||
pub tick: u32,
|
pub tick: u32,
|
||||||
string_table_names: Vec<Cow<'a, str>>,
|
pub string_table_names: Vec<Cow<'a, str>>,
|
||||||
analyser: T,
|
analyser: T,
|
||||||
pub state_handler: ParserState,
|
pub state_handler: ParserState,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -108,8 +108,8 @@ impl<'a, A: MessageHandler> DemoParser<'a, A> {
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct RawPacketStream<'a> {
|
pub struct RawPacketStream<'a> {
|
||||||
stream: Stream<'a>,
|
stream: Stream<'a>,
|
||||||
ended: bool,
|
pub ended: bool,
|
||||||
incomplete: bool,
|
pub incomplete: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> RawPacketStream<'a> {
|
impl<'a> RawPacketStream<'a> {
|
||||||
|
|
@ -121,14 +121,18 @@ impl<'a> RawPacketStream<'a> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn pos(&self) -> usize {
|
||||||
|
self.stream.pos()
|
||||||
|
}
|
||||||
|
|
||||||
pub fn next(&mut self, state: &ParserState) -> Result<Option<Packet<'a>>> {
|
pub fn next(&mut self, state: &ParserState) -> Result<Option<Packet<'a>>> {
|
||||||
if self.ended {
|
if self.ended {
|
||||||
Ok(None)
|
Ok(None)
|
||||||
} else {
|
} else {
|
||||||
match Packet::parse(&mut self.stream, state) {
|
match Packet::parse(&mut self.stream, state) {
|
||||||
Ok(Packet::Stop(_)) => {
|
Ok(packet @ Packet::Stop(_)) => {
|
||||||
self.ended = true;
|
self.ended = true;
|
||||||
Ok(None)
|
Ok(Some(packet))
|
||||||
}
|
}
|
||||||
Ok(packet) => Ok(Some(packet)),
|
Ok(packet) => Ok(Some(packet)),
|
||||||
Err(ParseError::ReadError(BitError::NotEnoughData { .. })) => {
|
Err(ParseError::ReadError(BitError::NotEnoughData { .. })) => {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue