public ByteFragment ToByteFragment()
        {
            var byteSegment = new ByteFragment {
                Buffer = _buffer, Offset = _leftOffsetWrite, Count = _rightOffsetWrite - _leftOffsetWrite
            };

            return(byteSegment);
        }
        public ByteFragment GetReadBuffer()
        {
            var byteFragment = new ByteFragment {
                Buffer = _buffer,
                Offset = _startOffset,
                Count  = _currentReadCount
            };

            return(byteFragment);
        }
        public ByteFragment ToByteFragment()
        {
            var byteFragment = new ByteFragment {
                Buffer = _buffer,
                Offset = _rightOffsetRead,
                Count  = _currentReadCount - (_rightOffsetRead - _startOffset)
            };

            return(byteFragment);
        }
        public ByteFragment RightPeek(int count)
        {
            var remaining = ReadRemaining();

            if (remaining < count)
            {
                throw new IndexOutOfRangeException($"缓冲区溢出!剩余可用{remaining},期望{count}");
            }

            var byteFragment = new ByteFragment {
                Buffer = _buffer,
                Offset = _rightOffsetRead,
                Count  = count
            };

            return(byteFragment);
        }
 public void ShiftLeft(ByteFragment value)
 {
     ShiftLeft(value.Buffer, value.Offset, value.Count);
 }