Esempio n. 1
0
        public void ReadHandler(byte[] data, int dataIndex, int dataSize)
        {
            int copyAmount = 0;

            var res = OnReceive(data, dataIndex, dataSize, out copyAmount);

            if (res == PacketProcessResult.Error) //Unknown data on a stream that doesn't have a reported size
            {
                ClientConnection.Dispose();
                return;
            }

            if (res == PacketProcessResult.Processed)
            {
                CurrentPacket.Reset();
                DataNeeded = DefaultDataNeeded();

                var realmProcessor = this as RealmPacketProcessor;
                if (realmProcessor != null)
                {
                    realmProcessor.DecryptPointer = 0;
                }
            }
            dataIndex += copyAmount;

            if (dataIndex < dataSize)
            {
                //we have more data to process
                ReadHandler(data, dataIndex, dataSize);
            }
        }