Esempio n. 1
0
        private void OnReceive(BufferData data)
        {
            do
            {
                inboundData.ShiftProcessedData();
                inboundData.Append(data);

                var sizeAvailable = inboundData.RemainingLength;

                if (sizeAvailable == 0)
                {
                    break;
                }
                var sizeNeeded = ReadExpectedSize(inboundData);

                if (sizeNeeded > sizeAvailable)
                {
                    // Likely a fragmented packet
                    //Logger.WriteLog(LogType.Network, "===== Fragmented packet =====");
                    break;
                }

                //Logger.WriteLog(LogType.Network, "[N] > needed : {0}   available : {1}", sizeNeeded, sizeAvailable);

                if (!DecodePacket(inboundData, out ushort subsize))
                {
                    break;
                }
            }while (true);

            if (data.RemainingLength > 0)
            {
                throw new Exception("Did not read all of data from socket, processing will be corrupted!");
            }
        }