Table of Contents

Class PositionWrapperStream

Namespace: Casewhere.Common
Assembly: Casewhere.Common.dll

Reading Position should be supported only for seekable streams, but ZipArchive seems to require this even from non-seekable streams, which is a bug (This bug fixed on .NET Core 2.0). So, we need to do to support writing ZIP files directly to OutputStream is to wrap it in a custom Stream that supports getting Position.

public class PositionWrapperStream : Stream, IDisposable

Inheritance

objectMarshalByRefObjectStreamPositionWrapperStream

Implements

IDisposable

Inherited Members

Stream.Null, Stream.CopyToAsync(Stream), Stream.CopyToAsync(Stream, int), Stream.CopyToAsync(Stream, int, CancellationToken), Stream.CopyTo(Stream), Stream.CopyTo(Stream, int), Stream.Close(), Stream.Dispose(), Stream.Dispose(bool), Stream.Flush(), Stream.FlushAsync(), Stream.FlushAsync(CancellationToken), Stream.CreateWaitHandle(), Stream.BeginRead(byte[], int, int, AsyncCallback, object), Stream.EndRead(IAsyncResult), Stream.ReadAsync(byte[], int, int), Stream.ReadAsync(byte[], int, int, CancellationToken), Stream.BeginWrite(byte[], int, int, AsyncCallback, object), Stream.EndWrite(IAsyncResult), Stream.WriteAsync(byte[], int, int), Stream.WriteAsync(byte[], int, int, CancellationToken), Stream.Seek(long, SeekOrigin), Stream.SetLength(long), Stream.Read(byte[], int, int), Stream.ReadByte(), Stream.Write(byte[], int, int), Stream.WriteByte(byte), Stream.Synchronized(Stream), Stream.ObjectInvariant(), Stream.CanRead, Stream.CanSeek, Stream.CanTimeout, Stream.CanWrite, Stream.Length, Stream.Position, Stream.ReadTimeout, Stream.WriteTimeout, MarshalByRefObject.MemberwiseClone(bool), MarshalByRefObject.GetLifetimeService(), MarshalByRefObject.InitializeLifetimeService(), MarshalByRefObject.CreateObjRef(Type), object.ToString(), object.Equals(object), object.Equals(object, object), object.ReferenceEquals(object, object), object.GetHashCode(), object.GetType(), object.MemberwiseClone()

Extension Methods

ObjectExtension.ConvertToBsonValue(object), EnumExtensions.DeepClone<PositionWrapperStream>(PositionWrapperStream)

Constructors

PositionWrapperStream(Stream)

public PositionWrapperStream(Stream wrapped)

Parameters

wrapped Stream

Properties

CanRead

public override bool CanRead { get; }

Property Value

bool

CanSeek

public override bool CanSeek { get; }

Property Value

bool

CanWrite

public override bool CanWrite { get; }

Property Value

bool

Length

public override long Length { get; }

Property Value

long

Position

public override long Position { get; set; }

Property Value

long

Methods

Dispose(bool)

protected override void Dispose(bool disposing)

Parameters

disposing bool

Flush()

public override void Flush()

Read(byte[], int, int)

public override int Read(byte[] buffer, int offset, int count)

Parameters

buffer byte[]

offset int

count int

Returns

int

Seek(long, SeekOrigin)

public override long Seek(long offset, SeekOrigin origin)

Parameters

offset long

origin SeekOrigin

Returns

long

SetLength(long)

public override void SetLength(long value)

Parameters

value long

Write(byte[], int, int)

public override void Write(byte[] buffer, int offset, int count)

Parameters

buffer byte[]

offset int

count int