1
0
Fork 0
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:
Robin Appelman 2021-07-21 19:49:35 +02:00
commit c1d023f85c
2 changed files with 9 additions and 5 deletions

View file

@ -43,7 +43,7 @@ impl MessageHandler for NullHandler {
#[derive(Clone)]
pub struct DemoHandler<'a, T: MessageHandler> {
pub tick: u32,
string_table_names: Vec<Cow<'a, str>>,
pub string_table_names: Vec<Cow<'a, str>>,
analyser: T,
pub state_handler: ParserState,
}

View file

@ -108,8 +108,8 @@ impl<'a, A: MessageHandler> DemoParser<'a, A> {
#[derive(Clone)]
pub struct RawPacketStream<'a> {
stream: Stream<'a>,
ended: bool,
incomplete: bool,
pub ended: bool,
pub incomplete: bool,
}
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>>> {
if self.ended {
Ok(None)
} else {
match Packet::parse(&mut self.stream, state) {
Ok(Packet::Stop(_)) => {
Ok(packet @ Packet::Stop(_)) => {
self.ended = true;
Ok(None)
Ok(Some(packet))
}
Ok(packet) => Ok(Some(packet)),
Err(ParseError::ReadError(BitError::NotEnoughData { .. })) => {