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

more handler info

This commit is contained in:
Robin Appelman 2022-04-03 18:24:57 +02:00
commit 3f693e96ae

View file

@ -5,6 +5,7 @@ use crate::demo::packet::Packet;
use crate::Result; use crate::Result;
use crate::demo::header::Header; use crate::demo::header::Header;
use crate::demo::packet::message::MessagePacketMeta;
use crate::ParserState; use crate::ParserState;
use std::borrow::Cow; use std::borrow::Cow;
@ -13,12 +14,16 @@ pub trait MessageHandler {
fn does_handle(message_type: MessageType) -> bool; fn does_handle(message_type: MessageType) -> bool;
fn handle_header(&mut self, _header: &Header) {}
fn handle_message(&mut self, _message: &Message, _tick: u32) {} fn handle_message(&mut self, _message: &Message, _tick: u32) {}
fn handle_string_entry(&mut self, _table: &str, _index: usize, _entries: &StringTableEntry) {} fn handle_string_entry(&mut self, _table: &str, _index: usize, _entries: &StringTableEntry) {}
fn handle_data_tables(&mut self, _tables: &[ParseSendTable], _server_classes: &[ServerClass]) {} fn handle_data_tables(&mut self, _tables: &[ParseSendTable], _server_classes: &[ServerClass]) {}
fn handle_packet_meta(&mut self, _meta: &MessagePacketMeta) {}
fn into_output(self, state: &ParserState) -> Self::Output; fn into_output(self, state: &ParserState) -> Self::Output;
} }
@ -82,6 +87,7 @@ impl<'a, T: MessageHandler> DemoHandler<'a, T> {
pub fn handle_header(&mut self, header: &Header) { pub fn handle_header(&mut self, header: &Header) {
self.state_handler.protocol_version = header.protocol; self.state_handler.protocol_version = header.protocol;
self.analyser.handle_header(header);
} }
pub fn handle_packet(&mut self, packet: Packet<'a>) -> Result<()> { pub fn handle_packet(&mut self, packet: Packet<'a>) -> Result<()> {
@ -95,6 +101,7 @@ impl<'a, T: MessageHandler> DemoHandler<'a, T> {
} }
} }
Packet::Message(packet) | Packet::Signon(packet) => { Packet::Message(packet) | Packet::Signon(packet) => {
self.analyser.handle_packet_meta(&packet.meta);
//self.tick = packet.tick; //self.tick = packet.tick;
for message in packet.messages { for message in packet.messages {
match message { match message {