public ReadOnlySequence GetReadOnlySequence()

in src/RecyclableMemoryStream.cs [738:763]


        public ReadOnlySequence<byte> GetReadOnlySequence()
        {
            this.CheckDisposed();

            if (this.largeBuffer != null)
            {
                AssertLengthIsSmall();
                return new ReadOnlySequence<byte>(this.largeBuffer, 0, (int)this.length);
            }

            if (this.blocks.Count == 1)
            {
                AssertLengthIsSmall();
                return new ReadOnlySequence<byte>(this.blocks[0], 0, (int)this.length);
            }

            var first = new BlockSegment(this.blocks[0]);
            var last = first;

            for (int blockIdx = 1; last.RunningIndex + last.Memory.Length < this.length; blockIdx++)
            {
                last = last.Append(this.blocks[blockIdx]);
            }

            return new ReadOnlySequence<byte>(first, 0, last, (int)(this.length - last.RunningIndex));
        }