mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-04 02:24:12 +02:00
some error refactoring
This commit is contained in:
parent
6b0442741e
commit
77180520ef
12 changed files with 1671 additions and 1298 deletions
|
|
@ -9,7 +9,9 @@ use crate::demo::gamevent::{
|
|||
RawGameEvent,
|
||||
};
|
||||
use crate::demo::parser::ParseBitSkip;
|
||||
use crate::{GameEventError, Parse, ParseError, ParserState, ReadResult, Result, Stream};
|
||||
use crate::{
|
||||
GameEventError, MalformedDemoError, Parse, ParseError, ParserState, ReadResult, Result, Stream,
|
||||
};
|
||||
|
||||
fn read_event_value(stream: &mut Stream, definition: &GameEventEntry) -> Result<GameEventValue> {
|
||||
Ok(match definition.kind {
|
||||
|
|
@ -20,9 +22,7 @@ fn read_event_value(stream: &mut Stream, definition: &GameEventEntry) -> Result<
|
|||
GameEventValueType::Byte => GameEventValue::Byte(stream.read()?),
|
||||
GameEventValueType::Boolean => GameEventValue::Boolean(stream.read()?),
|
||||
GameEventValueType::Local => GameEventValue::Local,
|
||||
GameEventValueType::None => {
|
||||
return Err(ParseError::MalformedGameEvent(GameEventError::NoneValue))
|
||||
}
|
||||
GameEventValueType::None => return Err(GameEventError::NoneValue.into()),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -48,7 +48,11 @@ impl Parse for GameEventMessage {
|
|||
values,
|
||||
}
|
||||
}
|
||||
None => return Err(ParseError::MalformedGameEvent(GameEventError::UnknownType)),
|
||||
None => {
|
||||
return Err(
|
||||
MalformedDemoError::MalformedGameEvent(GameEventError::UnknownType).into(),
|
||||
)
|
||||
}
|
||||
};
|
||||
let event = GameEvent::from_raw_event(raw_event)?;
|
||||
Ok(GameEventMessage { event })
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ use crate::demo::message::tempentities::*;
|
|||
use crate::demo::message::usermessage::*;
|
||||
use crate::demo::message::voice::*;
|
||||
use crate::demo::parser::ParseBitSkip;
|
||||
use crate::{Parse, ParseError, ParserState, Result, Stream};
|
||||
use crate::{MalformedDemoError, Parse, ParseError, ParserState, Result, Stream};
|
||||
|
||||
pub mod bspdecal;
|
||||
pub mod classinfo;
|
||||
|
|
@ -65,7 +65,7 @@ impl Parse for MessageType {
|
|||
fn parse(stream: &mut Stream, _state: &ParserState) -> Result<Self> {
|
||||
let raw = stream.read_int(6)?;
|
||||
let prop_type: Option<MessageType> = MessageType::from_u8(raw);
|
||||
prop_type.ok_or(ParseError::InvalidMessageType(raw))
|
||||
prop_type.ok_or(MalformedDemoError::InvalidMessageType(raw).into())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@ use num_traits::{PrimInt, Unsigned};
|
|||
use snap::Decoder;
|
||||
|
||||
use crate::demo::packet::stringtable::{
|
||||
ExtraData, FixedUserdataSize, StringTable, StringTableEntry,
|
||||
ExtraData, FixedUserDataSize, StringTable, StringTableEntry,
|
||||
};
|
||||
use crate::demo::parser::ParseBitSkip;
|
||||
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
|
||||
use crate::{MalformedDemoError, Parse, ParseError, ParserState, ReadResult, Result, Stream};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct CreateStringTableMessage {
|
||||
|
|
@ -16,14 +16,14 @@ pub struct CreateStringTableMessage {
|
|||
#[derive(Debug)]
|
||||
pub struct StringTableMeta {
|
||||
pub max_entries: u16,
|
||||
pub fixed_userdata_size: Option<FixedUserdataSize>,
|
||||
pub fixed_userdata_size: Option<FixedUserDataSize>,
|
||||
}
|
||||
|
||||
impl From<&StringTable> for StringTableMeta {
|
||||
fn from(table: &StringTable) -> Self {
|
||||
StringTableMeta {
|
||||
max_entries: table.max_entries,
|
||||
fixed_userdata_size: table.fixed_userdata_size,
|
||||
fixed_userdata_size: table.fixed_user_data_size,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -80,7 +80,7 @@ impl Parse for CreateStringTableMessage {
|
|||
let table = StringTable {
|
||||
entries,
|
||||
max_entries,
|
||||
fixed_userdata_size,
|
||||
fixed_user_data_size: fixed_userdata_size,
|
||||
client_entries: None,
|
||||
compressed,
|
||||
name,
|
||||
|
|
@ -97,7 +97,7 @@ impl ParseBitSkip for CreateStringTableMessage {
|
|||
let _: u16 = stream.read_sized(encode_bits as usize + 1)?;
|
||||
let length = read_var_int(stream)?;
|
||||
|
||||
let _: Option<FixedUserdataSize> = stream.read()?;
|
||||
let _: Option<FixedUserDataSize> = stream.read()?;
|
||||
|
||||
let _: bool = stream.read()?;
|
||||
|
||||
|
|
@ -122,7 +122,7 @@ impl Parse for UpdateStringTableMessage {
|
|||
|
||||
let entries = match state.string_tables.get(table_id as usize) {
|
||||
Some(table) => parse_string_table_update(&mut data, table, changed),
|
||||
None => return Err(ParseError::StringTableNotFound(table_id)),
|
||||
None => return Err(MalformedDemoError::StringTableNotFound(table_id).into()),
|
||||
}?;
|
||||
|
||||
Ok(UpdateStringTableMessage { table_id, entries })
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue