protected virtual void DoParse(ParsablePacketInfo info, LogHandler handler) { var rawPacket = info.Packet; if (rawPacket.PacketId.IsUpdatePacket) { var len = rawPacket.Length - rawPacket.HeaderSize; var bytes = rawPacket.ReadBytes(len); if (bytes.Length != len) { log.Warn("BinaryReader.ReadBytes failed: {0} / {1}", bytes.Length, len); return; } var updatePacket = ParsedUpdatePacket.Create(info.Timestamp, bytes, false, rawPacket.PacketId == RealmServerOpCode.SMSG_COMPRESSED_UPDATE_OBJECT); if (handler.UpdatePacketHandler != null) { handler.UpdatePacketHandler(updatePacket); } } else { var parser = new PacketParser(info); parser.Parse(); if (handler.NormalPacketHandler != null) { handler.NormalPacketHandler(parser); } } }
public static void ParsePacket(ParsablePacketInfo info, IndentTextWriter writer) { PacketAnalyzer.Dump(info, writer); writer.WriteLine(); ((IDisposable)info.Packet).Dispose(); }
/// <summary> /// Renders a single WoW - Packet /// </summary> public static void Dump(ParsablePacketInfo info, IndentTextWriter writer) { var packet = info.Packet; if (packet.PacketId.IsUpdatePacket) { ParsedUpdatePacket.Dump(info.Timestamp, packet.ReadBytes(packet.Length - packet.HeaderSize), false, writer, packet.PacketId.RawId == (uint)RealmServerOpCode.SMSG_COMPRESSED_UPDATE_OBJECT); } else { var parser = new PacketParser(info); parser.Parse(); parser.Dump(writer); } writer.WriteLine(); }
public ParsedUpdatePacket(ParsablePacketInfo info) : this(GetBytes(info.Packet), false) { TimeStamp = info.Timestamp; }
public PacketParser(ParsablePacketInfo info) : this(info.Packet, info.Sender, PacketAnalyzer.GetDefinition(info.Packet.PacketId, info.Sender)) { Timestamp = info.Timestamp; }