class Overlook::Csgo::Demo::PacketHandler
Determines which handler to use to read a packet and yields that handler along with the message to the block
Attributes
parser[R]
Public Class Methods
new(_parser, parser_config)
click to toggle source
# File lib/overlook/csgo/demo/packet_handler.rb, line 16 def initialize(_parser, parser_config) @parser = _parser @parser_config = parser_config end
Public Instance Methods
handle(packet)
click to toggle source
# File lib/overlook/csgo/demo/packet_handler.rb, line 21 def handle(packet) reader = BitReader.new(packet.data) loop do message_type = reader.var_int32 message_size = reader.var_int32 handler = handlers[message_type] if handler && handle?(handler) handler.handle(reader.bytes(message_size)) else reader.skip(message_size) end break if reader.eof? end end
Private Instance Methods
handle?(handler)
click to toggle source
# File lib/overlook/csgo/demo/packet_handler.rb, line 50 def handle?(handler) case handler when GameEventListMessageHandler, GameEventMessageHandler @parser_config.parse_game_events? when UserMessageMessageHandler @parser_config.parse_user_messages? when EncryptedDataHandler @parser_config.parse_encrypted_data? else true end end
handlers()
click to toggle source
# File lib/overlook/csgo/demo/packet_handler.rb, line 41 def handlers { ::Csgo::SVC_Messages::Svc_UserMessage => UserMessageMessageHandler.new(parser), ::Csgo::SVC_Messages::Svc_GameEventList => GameEventListMessageHandler.new(parser), ::Csgo::SVC_Messages::Svc_GameEvent => GameEventMessageHandler.new(parser), ::Csgo::SVC_Messages::Svc_EncryptedData => EncryptedDataHandler.new(parser), } end