Beispiel #1
0
        int ProcessPacket(byte[] data, int offset)
        {
            ushort verify     = BitConverter.ToUInt16(data, 0);
            int    dataLength = data[offset] | data[offset + 1] << 8;

            byte[] decrypted = _csSec.DecryptPacket(data, offset + 2, dataLength);

            // Grab the packet header
            MemoryStream mem    = new MemoryStream(decrypted);
            BinaryReader br     = new BinaryReader(mem);
            PacketHeader header = PacketHeader.Read(br);

            LogInterface.Log(string.Format("Recieved packet from client ({0}): 0x{1:x}", AccountID, header.Opcode), LogInterface.LogMessageType.Debug);

            // Dispatch the packet for further processing
            if (_packetHandlers.ContainsKey(header.Opcode))
            {
                _packetHandlers[header.Opcode](header, br);
            }
            else
            {
                LogInterface.Log(string.Format("Unhandled packet 0x{0:x} - Length: {1}", header.Opcode, header.PacketLength), LogInterface.LogMessageType.Error, true);
                DumpPacketData(header, br);
            }

            return(dataLength + 2);
        }