Show / Hide Table of Contents

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
Namespace: Eco.Shared.Pools
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

Shared pool of PooledMemoryStream for zero-allocations System.IO.MemoryStream instances.

Declaration
public static readonly PoolService<PooledMemoryStream> Shared
Field Value
Type Description
PoolService<PooledMemoryStream>

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
public void Truncate()

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

CommandLine.FeedFromCommandLine(Object)
CommandLine.ToCommandLineArgs(Object, Func<Object, Boolean>)
ListUtil.DepthFirstTraversal<T>(T, Func<T, IEnumerable<T>>)
EnumerableExtensions.SingleItemAsEnumerable<T>(T)
EventUtils.RaiseEvent<TEventArgs>(Object, String, TEventArgs)
PredicateUtils.MatchesAll<TEnumerable, T>(T, TEnumerable)
PredicateUtils.MatchesAll<T>(T, Func<T, Boolean>[])
PredicateUtils.MatchesAny<TEnumerable, T>(T, TEnumerable)
ReflectionUtils.PropertyValue<T>(Object, PropertyInfo)
ReflectionUtils.TryGetPropertyValueByName<T>(Object, String, out T)
ReflectionUtils.GetPropertyValueByName<T>(Object, String)
ReflectionUtils.SetPropertyByName(Object, String, Object)
ReflectionUtils.GetStructPropertyByName<T>(Object, String)
ReflectionUtils.GetStringPropertyByName(Object, String)
ReflectionUtils.ZipByProperty<T>(Object, Object, Object, Func<T, T, T>)
☀
☾
In This Article
Back to top
Copyright (c) Strange Loop Games 2021
☀
☾