Beispiel #1
0
        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;
 }
Beispiel #3
0
        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);
        }
Beispiel #4
0
 public FieldNodeTag(RiftPacket pPacket, RiftPacketField pField)
 {
     Packet = pPacket; Field = pField;
 }
Beispiel #5
0
 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);
     }
 }
Beispiel #6
0
        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));
        }
Beispiel #7
0
 internal void AddPacketField(int pIndex, RiftPacket pValue)
 {
     RiftPacketField field = new RiftPacketField(ERiftPacketFieldType.Packet, pIndex);
     field.Value = new RiftPacketFieldValue(ERiftPacketFieldType.Packet, pValue);
     mFields.Add(field);
 }
Beispiel #8
0
 protected internal abstract void OnPacket(RiftPacket pPacket);
Beispiel #9
0
 protected internal abstract void OnPacket(RiftPacket pPacket);
Beispiel #10
0
 public RiftPacketFieldValue(ERiftPacketFieldType pType, RiftPacket pPacket)
 {
     Type   = pType;
     Packet = pPacket;
 }