internal void AddPacketField(int pIndex, RiftPacket pValue) { RiftPacketField field = new RiftPacketField(ERiftPacketFieldType.Packet, pIndex); field.Value = new RiftPacketFieldValue(ERiftPacketFieldType.Packet, pValue); mFields.Add(field); }
public bool ReadPacket(out RiftPacket pPacket, out int pSizeOfPacket) { long opcode; int sizeOfOpcode; pPacket = null; pSizeOfPacket = 0; if (!Decode7BitValue(out opcode, out sizeOfOpcode, mBuffer, mCursor, mLength)) return false; pSizeOfPacket += sizeOfOpcode; mCursor += sizeOfOpcode; mLength -= sizeOfOpcode; pPacket = new RiftPacket(mTimestamp, mOutbound, (int)opcode); long fieldData; int sizeOfFieldData; while (Decode7BitValue(out fieldData, out sizeOfFieldData, mBuffer, mCursor, mLength)) { pSizeOfPacket += sizeOfFieldData; mCursor += sizeOfFieldData; mLength -= sizeOfFieldData; int fieldType; int fieldIndex; if (!Decode2Parameters(fieldData, out fieldType, out fieldIndex)) return false; RiftPacketField field = new RiftPacketField((ERiftPacketFieldType)fieldType, fieldIndex); int sizeOfFieldValue; if (!ReadFieldValue((ERiftPacketFieldType)fieldType, out field.Value, out sizeOfFieldValue)) return false; pSizeOfPacket += sizeOfFieldValue; if (field.Type == ERiftPacketFieldType.Terminator) break; pPacket.Fields.Add(field); } return true; }
public bool ReadPacket(out RiftPacket pPacket, out int pSizeOfPacket) { long opcode; int sizeOfOpcode; pPacket = null; pSizeOfPacket = 0; if (!Decode7BitValue(out opcode, out sizeOfOpcode, mBuffer, mCursor, mLength)) { return(false); } pSizeOfPacket += sizeOfOpcode; mCursor += sizeOfOpcode; mLength -= sizeOfOpcode; pPacket = new RiftPacket(mTimestamp, mOutbound, (int)opcode); long fieldData; int sizeOfFieldData; while (Decode7BitValue(out fieldData, out sizeOfFieldData, mBuffer, mCursor, mLength)) { pSizeOfPacket += sizeOfFieldData; mCursor += sizeOfFieldData; mLength -= sizeOfFieldData; int fieldType; int fieldIndex; if (!Decode2Parameters(fieldData, out fieldType, out fieldIndex)) { return(false); } RiftPacketField field = new RiftPacketField((ERiftPacketFieldType)fieldType, fieldIndex); int sizeOfFieldValue; if (!ReadFieldValue((ERiftPacketFieldType)fieldType, out field.Value, out sizeOfFieldValue)) { return(false); } pSizeOfPacket += sizeOfFieldValue; if (field.Type == ERiftPacketFieldType.Terminator) { break; } pPacket.Fields.Add(field); } return(true); }
public FieldNodeTag(RiftPacket pPacket, RiftPacketField pField) { Packet = pPacket; Field = pField; }
private void Parse(TreeListNode pNode, RiftPacket pPacket) { bool exists = false; foreach (object item in mOpcodeSearchCombo.Items) { OpcodeSearchItem opcodeItem = item as OpcodeSearchItem; exists = opcodeItem.Outbound == pPacket.Outbound && opcodeItem.Opcode == pPacket.Opcode; if (exists) break; } if (!exists) { PacketDescriptions.PacketDescription description = PacketDescriptions.Instance.Descriptions.Find(d => d.Outbound == pPacket.Outbound && d.Opcode == pPacket.Opcode); mOpcodeSearchCombo.Items.Add(new OpcodeSearchItem(pPacket.Outbound, pPacket.Opcode, description != null && description.Name.Trim().Length > 0 ? description.Name : "")); } foreach (RiftPacketField field in pPacket.Fields) { TreeListNode fieldNode = new TreeListNode(); if (field.Type == ERiftPacketFieldType.Packet) fieldNode.Tag = field.Value.Packet; else fieldNode.Tag = new FieldNodeTag(pPacket, field); fieldNode.Text = ""; fieldNode.SubItems.Add(""); fieldNode.SubItems.Add(field.Type.ToString()); if (field.Type == ERiftPacketFieldType.Packet) { PacketDescriptions.PacketDescription description = PacketDescriptions.Instance.Descriptions.Find(d => d.Outbound == field.Value.Packet.Outbound && d.Opcode == field.Value.Packet.Opcode); if (description != null && description.Name.Trim().Length > 0) fieldNode.SubItems.Add(description.Name + " (Field " + field.Index.ToString() + ")"); else fieldNode.SubItems.Add("Field " + field.Index.ToString()); } else { PacketDescriptions.PacketDescription description = PacketDescriptions.Instance.Descriptions.Find(d => d.Outbound == pPacket.Outbound && d.Opcode == pPacket.Opcode); if (description != null) { PacketDescriptions.PacketDescription.PacketField fieldDescription = description.Fields.Find(f => f.Index == field.Index); if (fieldDescription != null && fieldDescription.Name.Trim().Length > 0) fieldNode.SubItems.Add(fieldDescription.Name + " (Field " + field.Index.ToString() + ")"); else fieldNode.SubItems.Add("Field " + field.Index.ToString()); } else fieldNode.SubItems.Add("Field " + field.Index.ToString()); } ParseValue(fieldNode, field.Type, field.Value); pNode.Nodes.Add(fieldNode); } }
private void AddPacket(RiftPacket pPacket, bool pRefreshing = false) { if (!pRefreshing) mPackets.Add(pPacket); mPacketView.BeginUpdate(); TreeListNode node = new TreeListNode(); node.Tag = pPacket; node.Text = pPacket.Timestamp.ToLongTimeString(); node.SubItems.Add(pPacket.Outbound ? "Outbound" : "Inbound"); node.SubItems.Add(ERiftPacketFieldType.Packet.ToString()); PacketDescriptions.PacketDescription description = PacketDescriptions.Instance.Descriptions.Find(d => d.Outbound == pPacket.Outbound && d.Opcode == pPacket.Opcode); if (description != null && description.Name.Trim().Length > 0) node.SubItems.Add(description.Name); else node.SubItems.Add(""); node.SubItems.Add("0x" + pPacket.Opcode.ToString("X8")); Parse(node, pPacket); mPacketView.Nodes.Add(node); mPacketView.EndUpdate(); mPacketView.AdjustScrollbars(); if (!pRefreshing) mPlugins.ForEach(p => p.OnPacket(pPacket)); }
protected internal abstract void OnPacket(RiftPacket pPacket);
public RiftPacketFieldValue(ERiftPacketFieldType pType, RiftPacket pPacket) { Type = pType; Packet = pPacket; }