1
0
Fork 0
mirror of https://codeberg.org/demostf/parser.git synced 2026-06-03 18:24:05 +02:00

better gameevent errors

This commit is contained in:
Robin Appelman 2019-03-04 23:28:45 +01:00
commit d7172a14cd
3 changed files with 11 additions and 3 deletions

View file

@ -5,7 +5,7 @@ use std::fs;
pub use tf_demo_parser::{Demo, DemoParser, Parse, ParseError, ParserState, Result, Stream};
fn main() -> std::result::Result<(), Box<ParseError>> {
let file = fs::read("data/gully.dem").expect("Unable to read file");
let file = fs::read("data/ash.dem").expect("Unable to read file");
let demo = Demo::new(file);
let stream: Stream = demo.get_stream();
let mut parser = DemoParser::new(stream);

View file

@ -51,6 +51,7 @@ impl FromGameEventValue for String {
match value {
GameEventValue::String(val) => Ok(val),
_ => Err(ParseError::InvalidGameEvent {
expected_type: GameEventValueType::String,
name: name.to_string(),
value,
}),
@ -63,6 +64,7 @@ impl FromGameEventValue for f32 {
match value {
GameEventValue::Float(val) => Ok(val),
_ => Err(ParseError::InvalidGameEvent {
expected_type: GameEventValueType::Float,
name: name.to_string(),
value,
}),
@ -75,6 +77,7 @@ impl FromGameEventValue for u32 {
match value {
GameEventValue::Long(val) => Ok(val),
_ => Err(ParseError::InvalidGameEvent {
expected_type: GameEventValueType::Long,
name: name.to_string(),
value,
}),
@ -87,6 +90,7 @@ impl FromGameEventValue for u16 {
match value {
GameEventValue::Short(val) => Ok(val),
_ => Err(ParseError::InvalidGameEvent {
expected_type: GameEventValueType::Short,
name: name.to_string(),
value,
}),
@ -99,6 +103,7 @@ impl FromGameEventValue for u8 {
match value {
GameEventValue::Byte(val) => Ok(val),
_ => Err(ParseError::InvalidGameEvent {
expected_type: GameEventValueType::Byte,
name: name.to_string(),
value,
}),
@ -111,6 +116,7 @@ impl FromGameEventValue for bool {
match value {
GameEventValue::Boolean(val) => Ok(val),
_ => Err(ParseError::InvalidGameEvent {
expected_type: GameEventValueType::Boolean,
name: name.to_string(),
value,
}),
@ -123,6 +129,7 @@ impl FromGameEventValue for () {
match value {
GameEventValue::Local => Ok(()),
_ => Err(ParseError::InvalidGameEvent {
expected_type: GameEventValueType::Local,
name: name.to_string(),
value,
}),

View file

@ -3,7 +3,7 @@ use std::rc::Rc;
use bitstream_reader::{BitRead, LittleEndian, ReadError};
use crate::demo::gamevent::GameEventValue;
use crate::demo::gamevent::{GameEventValue, GameEventValueType};
use crate::demo::header::Header;
use crate::demo::message::{Message, MessageType};
use crate::demo::packet::stringtable::StringTableEntry;
@ -14,6 +14,7 @@ pub use crate::demo::parser::state::ParserState;
use crate::Stream;
use std::cell::RefCell;
use std::ops::Deref;
use crate::demo::gameevent_gen::GameEventType;
mod analyser;
mod handler;
@ -39,7 +40,7 @@ pub enum ParseError {
/// A unknown game event type was read
UnknownGameEvent(String),
/// A read game event doesn't contain the expected values
InvalidGameEvent { name: String, value: GameEventValue },
InvalidGameEvent { expected_type: GameEventValueType, name: String, value: GameEventValue },
/// Unexpected type of compressed data
UnexpectedCompressionType(String),
/// Error while decompressing SNAP compressed string table