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
chunkSize
int
SegmentSequenceBuffer(ISegmentReader, int)
Ctor from reader
and optional chunkSize
public SegmentSequenceBuffer(ISegmentReader reader, int chunkSize = 4096)
Parameters
reader
ISegmentReaderchunkSize
int
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
count
int
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
sizeHint
int
Returns
GetSpan(int)
public Span<byte> GetSpan(int sizeHint = 0)
Parameters
sizeHint
int
Returns
Reset()
Reset buffer.
public void Reset()
Shrink()
Shrink buffer to last segment and return count of bytes shrinked.
public long Shrink()