Table of Contents

Class SegmentSequenceBuffer

Namespace
Tlabs.Misc
Assembly
Tlabs.Core.dll

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

strm Stream
chunkSize int

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 ISegmentReader
chunkSize int

Properties

IsEndOfStream

True if end of stream is reached.

public bool IsEndOfStream { get; }

Property Value

bool

MinChunkSz

Minimum buffer chunk size.

public int MinChunkSz { get; }

Property Value

int

Sequence

Return buffered stream contents as as ReadOnlySequence<T>.

public ref readonly ReadOnlySequence<byte> Sequence { get; }

Property Value

ReadOnlySequence<byte>

WrittenCount

Filling level of the buffer.

public int WrittenCount { get; }

Property Value

int

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

count int
isEndOfData bool

Dispose()

public void Dispose()

Expand()

Expand buffer with more data from stream.

public ref readonly ReadOnlySequence<byte> Expand()

Returns

ReadOnlySequence<byte>

GetMemory(int)

public Memory<byte> GetMemory(int sizeHint = 0)

Parameters

sizeHint int

Returns

Memory<byte>

GetSpan(int)

public Span<byte> GetSpan(int sizeHint = 0)

Parameters

sizeHint int

Returns

Span<byte>

Reset()

Reset buffer.

public void Reset()

Shrink()

Shrink buffer to last segment and return count of bytes shrinked.

public long Shrink()

Returns

long