Class PooledMemoryStream
PooledMemoryStream (based on https://github.com/itn3000/PooledStream).
It uses .NET Standard System.Buffers.ArrayPool<> for buffer allocations.
Also it has Truncate() which returns buffer to System.Buffers.ArrayPool<> and resets length, position and capacity to zero.
It makes the stream reusable without holding extra memory for buffer.
Inheritance
System.Object
PooledMemoryStream
Assembly: Eco.Shared.dll
Syntax
public class PooledMemoryStream : MemoryStream
Constructors
PooledMemoryStream()
Declaration
public PooledMemoryStream()
PooledMemoryStream(ArrayPool<Byte>, Int32)
Declaration
public PooledMemoryStream(ArrayPool<byte> pool, int capacity = 4096)
Parameters
Type |
Name |
Description |
System.Buffers.ArrayPool<System.Byte> |
pool |
|
System.Int32 |
capacity |
|
Fields
Shared
Declaration
public static readonly PoolService<PooledMemoryStream> Shared
Field Value
Properties
CanRead
Declaration
public override bool CanRead { get; }
Property Value
Type |
Description |
System.Boolean |
|
CanSeek
Declaration
public override bool CanSeek { get; }
Property Value
Type |
Description |
System.Boolean |
|
CanWrite
Declaration
public override bool CanWrite { get; }
Property Value
Type |
Description |
System.Boolean |
|
Capacity
Declaration
public override int Capacity { get; set; }
Property Value
Type |
Description |
System.Int32 |
|
Length
Declaration
public override long Length { get; }
Property Value
Type |
Description |
System.Int64 |
|
Position
Declaration
public override long Position { get; set; }
Property Value
Type |
Description |
System.Int64 |
|
Methods
CopyToAsync(Stream, Int32, CancellationToken)
Declaration
public override Task CopyToAsync(Stream destination, int bufferSize, CancellationToken cancellationToken)
Parameters
Type |
Name |
Description |
System.IO.Stream |
destination |
|
System.Int32 |
bufferSize |
|
System.Threading.CancellationToken |
cancellationToken |
|
Returns
Type |
Description |
System.Threading.Tasks.Task |
|
Dispose(Boolean)
Declaration
protected override void Dispose(bool disposing)
Parameters
Type |
Name |
Description |
System.Boolean |
disposing |
|
Flush()
Declaration
public override void Flush()
GetBuffer()
This buffer is only valid until next Write or Reset operation.
Declaration
public override byte[] GetBuffer()
Returns
Type |
Description |
System.Byte[] |
current buffer.
|
Read(Byte[], Int32, Int32)
Declaration
public override int Read(byte[] buffer, int offset, int count)
Parameters
Type |
Name |
Description |
System.Byte[] |
buffer |
|
System.Int32 |
offset |
|
System.Int32 |
count |
|
Returns
Type |
Description |
System.Int32 |
|
Read(Span<Byte>)
Declaration
public override int Read(Span<byte> buffer)
Parameters
Type |
Name |
Description |
System.Span<System.Byte> |
buffer |
|
Returns
Type |
Description |
System.Int32 |
|
ReadByte()
Declaration
public override int ReadByte()
Returns
Type |
Description |
System.Int32 |
|
Reserve(Int32)
Declaration
public void Reserve(int capacity)
Parameters
Type |
Name |
Description |
System.Int32 |
capacity |
|
Seek(Int64, SeekOrigin)
Declaration
public override long Seek(long offset, SeekOrigin origin)
Parameters
Type |
Name |
Description |
System.Int64 |
offset |
|
System.IO.SeekOrigin |
origin |
|
Returns
Type |
Description |
System.Int64 |
|
SetLength(Int64)
Declaration
public override void SetLength(long value)
Parameters
Type |
Name |
Description |
System.Int64 |
value |
|
ToArray()
Declaration
public override byte[] ToArray()
Returns
Type |
Description |
System.Byte[] |
|
Truncate()
Declaration
TryGetBuffer(out ArraySegment<Byte>)
Returns occupied array segment of memory stream buffer.
Declaration
public override bool TryGetBuffer(out ArraySegment<byte> buffer)
Parameters
Type |
Name |
Description |
System.ArraySegment<System.Byte> |
buffer |
|
Returns
Type |
Description |
System.Boolean |
|
Write(Byte[], Int32, Int32)
Declaration
public override void Write(byte[] buffer, int offset, int count)
Parameters
Type |
Name |
Description |
System.Byte[] |
buffer |
|
System.Int32 |
offset |
|
System.Int32 |
count |
|
Write(ReadOnlySpan<Byte>)
Declaration
public override void Write(ReadOnlySpan<byte> buffer)
Parameters
Type |
Name |
Description |
System.ReadOnlySpan<System.Byte> |
buffer |
|
WriteByte(Byte)
Declaration
public override void WriteByte(byte value)
Parameters
Type |
Name |
Description |
System.Byte |
value |
|
WriteTo(Stream)
Declaration
public override void WriteTo(Stream stream)
Parameters
Type |
Name |
Description |
System.IO.Stream |
stream |
|
Extension Methods