Class SegmentSequenceBuffer
Buffer that efficiently grows or shrinks in size with minimal allocation and data copying.
public sealed class SegmentSequenceBuffer : IBufferWriter<byte>, IDisposable
- Inheritance
-
SegmentSequenceBuffer
- Implements
- Inherited Members
- Extension Methods
Remarks
Access to the buffer is provided with a ReadOnlySequence<T>.
The optional ISegmentReader is used to read more data on Expand().
As an alternative the IBufferWriter<T> interface is implemented to allow for manually data append.
Constructors
SegmentSequenceBuffer(Stream, int)
Ctor from strm and optional chunkSize
public SegmentSequenceBuffer(Stream strm, int chunkSize = 4096)
Parameters
SegmentSequenceBuffer(int)
Ctor from optional chunkSize
public SegmentSequenceBuffer(int chunkSize = 4096)
Parameters
chunkSizeint
SegmentSequenceBuffer(ISegmentReader, int)
Ctor from reader and optional chunkSize
public SegmentSequenceBuffer(ISegmentReader reader, int chunkSize = 4096)
Parameters
readerISegmentReaderchunkSizeint
Properties
IsEndOfStream
True if end of stream is reached.
public bool IsEndOfStream { get; }
Property Value
MinChunkSz
Minimum buffer chunk size.
public int MinChunkSz { get; }
Property Value
Sequence
Return buffered stream contents as as ReadOnlySequence<T>.
public ref readonly ReadOnlySequence<byte> Sequence { get; }
Property Value
WrittenCount
Filling level of the buffer.
public int WrittenCount { get; }
Property Value
Methods
Advance(int)
public void Advance(int count)
Parameters
countint
Advance(int, bool)
Advance buffer end by count written bytes and specify isEndOfData.
public void Advance(int count, bool isEndOfData)
Parameters
Dispose()
public void Dispose()
Expand()
Expand buffer with more data from stream.
public ref readonly ReadOnlySequence<byte> Expand()
Returns
GetMemory(int)
public Memory<byte> GetMemory(int sizeHint = 0)
Parameters
sizeHintint
Returns
GetSpan(int)
public Span<byte> GetSpan(int sizeHint = 0)
Parameters
sizeHintint
Returns
Reset()
Reset buffer.
public void Reset()
Shrink()
Shrink buffer to last segment and return count of bytes shrinked.
public long Shrink()