Ejemplo n.º 1
0
        /// <summary>
        ///     跳过指定字节长度
        /// </summary>
        /// <param name="length">需要跳过的字节长度</param>
        public void Skip(uint length)
        {
            IMemorySegment segment = GetSegment(_currentIndex);
            uint           remainingSize;

            if (segment.EnsureSize(length, out remainingSize))
            {
                segment.Skip(length);
            }
            else
            {
                uint trueRemainingSize = length;
                while (trueRemainingSize > 0U)
                {
                    if (remainingSize > 0U)
                    {
                        segment.Skip(remainingSize);
                        trueRemainingSize -= remainingSize;
                    }
                    segment = GetSegment(++_currentIndex);
                    if (!segment.EnsureSize(trueRemainingSize, out remainingSize))
                    {
                        continue;
                    }
                    segment.Skip(trueRemainingSize);
                    break;
                }
            }
        }