I'm re-implementing a protocol in terms of System.IO.Pipelines and striving for minimal allocations, especially of large objects. As part of this, I no longer have to allocate a large array for the entire message, since I read it as it comes in via PipeReader.
At some point I get to the main "content" which I need to deserialize. The deserialization API accepts a TextReader, which I plan to use a StreamReader for. But for that I need a Stream that will read from the ReadOnlySequence<byte> that I got from the PipeReader. I'm planning on writing this up myself in Nerdbank.Streams and exposing it as an Stream ReadOnlySequence<byte>.AsStream() extension method.
Should this be a built-in feature of .NET? I'm imagining perhaps a ReadOnlyMemoryStream class with constructors that accepts ReadOnlyMemory<byte> or ReadOnlySequence<byte> .
I'm re-implementing a protocol in terms of System.IO.Pipelines and striving for minimal allocations, especially of large objects. As part of this, I no longer have to allocate a large array for the entire message, since I read it as it comes in via
PipeReader.At some point I get to the main "content" which I need to deserialize. The deserialization API accepts a
TextReader, which I plan to use aStreamReaderfor. But for that I need aStreamthat will read from theReadOnlySequence<byte>that I got from thePipeReader. I'm planning on writing this up myself inNerdbank.Streamsand exposing it as anStream ReadOnlySequence<byte>.AsStream()extension method.Should this be a built-in feature of .NET? I'm imagining perhaps a
ReadOnlyMemoryStreamclass with constructors that acceptsReadOnlyMemory<byte>orReadOnlySequence<byte>.