Skip to main content

DuplicateStream Class

Duplicates a source stream by maintaining a separate position.

Methods​

MethodDescription
Close()Closes the underlying stream, effectively closing ALL duplicates.
Flush()Flushes the source stream.
OriginalStream(stream)Retrieves the original stream from a possible duplicate stream.
Read(buffer, offset, count)Reads from the source stream while maintaining a separate position and not impacting the source stream's position.
Seek(offset, origin)Changes the position of this stream without impacting the source stream's position.
SetLength(value)Sets the length of the source stream.
Write(buffer, offset, count)Writes to the source stream while maintaining a separate position and not impacting the source stream's position.

Properties​

PropertyDescription
CanReadGets a value indicating whether the source stream supports reading.
CanSeekGets a value indicating whether the source stream supports seeking.
CanWriteGets a value indicating whether the source stream supports writing.
LengthGets the length of the source stream.
PositionGets or sets the position of the current stream, ignoring the position of the source stream.
SourceGets the original stream that was used to create the duplicate.

Remarks​

WARNING: duplicate streams are not thread-safe with respect to each other or the original stream. If multiple threads use duplicate copies of the same stream, they must synchronize for any operations. WixToolset.Dtf.Compression.dll version 6.0.0+8c7432e50072e009353ea5f2c956ccf453476f71

Close() Method​

Closes the underlying stream, effectively closing ALL duplicates.

Declaration​

public void Close()

Flush() Method​

Flushes the source stream.

Declaration​

public void Flush()

OriginalStream(stream) Method​

Retrieves the original stream from a possible duplicate stream.

Declaration​

public static System.IO.Stream OriginalStream(
System.IO.Stream stream
)

Parameters​

ParameterTypeDescription
streamSystem.IO.StreamPossible duplicate stream.

Return value​

System.IO.Stream If the stream is a DuplicateStream, returns the duplicate's source; otherwise returns the same stream.

Read(buffer, offset, count) Method​

Reads from the source stream while maintaining a separate position and not impacting the source stream's position.

Declaration​

public int Read(
System.Byte[] buffer,
int offset,
int count
)

Parameters​

ParameterTypeDescription
bufferSystem.Byte[]An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source.
offsetintThe zero-based byte offset in buffer at which to begin storing the data read from the current stream.
countintThe maximum number of bytes to be read from the current stream.

Return value​

int The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.

Seek(offset, origin) Method​

Changes the position of this stream without impacting the source stream's position.

Declaration​

public System.Int64 Seek(
System.Int64 offset,
System.IO.SeekOrigin origin
)

Parameters​

ParameterTypeDescription
offsetSystem.Int64A byte offset relative to the origin parameter.
originSystem.IO.SeekOriginA value of type SeekOrigin indicating the reference point used to obtain the new position.

Return value​

System.Int64 The new position within the current stream.

SetLength(value) Method​

Sets the length of the source stream.

Declaration​

public void SetLength(
System.Int64 value
)

Parameters​

ParameterTypeDescription
valueSystem.Int64The desired length of the stream in bytes.

Write(buffer, offset, count) Method​

Writes to the source stream while maintaining a separate position and not impacting the source stream's position.

Declaration​

public void Write(
System.Byte[] buffer,
int offset,
int count
)

Parameters​

ParameterTypeDescription
bufferSystem.Byte[]An array of bytes. This method copies count bytes from buffer to the current stream.
offsetintThe zero-based byte offset in buffer at which to begin copying bytes to the current stream.
countintThe number of bytes to be written to the current stream.

CanRead Property​

Gets a value indicating whether the source stream supports reading.

Declaration​

public bool CanRead { get; set; } 

CanSeek Property​

Gets a value indicating whether the source stream supports seeking.

Declaration​

public bool CanSeek { get; set; } 

CanWrite Property​

Gets a value indicating whether the source stream supports writing.

Declaration​

public bool CanWrite { get; set; } 

Length Property​

Gets the length of the source stream.

Declaration​

public System.Int64 Length { get; set; } 

Position Property​

Gets or sets the position of the current stream, ignoring the position of the source stream.

Declaration​

public System.Int64 Position { get; set; } 

Source Property​

Gets the original stream that was used to create the duplicate.

Declaration​

public System.IO.Stream Source { get; set; }