Skip to content


Provides a type providing a view into a System.IO.Stream.

Note: This type predates the introduction of Span<T> APIs in .NET, which may provide a valid alternative.


A StreamSegment is similar to an ArraySegment<T>. It provides a view over a System.IO.Stream given an offset and a length. All accesses are bounds checked and get forwarded to the underlying stream using the specified offset.

Stream segment = new StreamSegment(stream, offset: 16, count: 32);

var bytes = new byte[4];
int count = segment.Read(bytes, 8, 4); // reads in stream at offset 24

This type is used by Reactor Core for recovery of operator state, which are stored with a length prefix encoding. The length is used to create a stream segment that gets passed to the operator to recover state from.