Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Easy enough if it does not already exist in the framework.</p> <pre><code> public class StreamRWJoin : Stream { public Stream WriteStream { get; set; } public Stream ReadStream { get; set; } private bool leaveOpen; public StreamRWJoin(Stream readfrom, Stream writeto, bool leaveOpen = false) { WriteStream = writeto; ReadStream = readfrom; this.leaveOpen = leaveOpen; } public override bool CanRead { get { return ReadStream.CanRead; } } public override bool CanSeek { get { return false; } } public override bool CanWrite { get { return WriteStream.CanWrite; } } public override void Flush() { WriteStream.Flush(); } public override long Length { get { throw new NotImplementedException(); } } public override long Position { get { throw new NotImplementedException(); } set { throw new NotImplementedException(); } } public override int Read(byte[] buffer, int offset, int count) { return ReadStream.Read(buffer, offset, count); } public override long Seek(long offset, SeekOrigin origin) { throw new NotImplementedException(); } public override void SetLength(long value) { throw new NotImplementedException(); } public override void Write(byte[] buffer, int offset, int count) { WriteStream.Write(buffer, offset, count); } public override void Close() { if (!leaveOpen) try { WriteStream.Close(); } finally { ReadStream.Close(); } } public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state) { return ReadStream.BeginRead(buffer, offset, count, callback, state); } public override int EndRead(IAsyncResult asyncResult) { return ReadStream.EndRead(asyncResult); } public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state) { return WriteStream.BeginWrite(buffer, offset, count, callback, state); } public override void EndWrite(IAsyncResult asyncResult) { WriteStream.EndWrite(asyncResult); } public override int ReadByte() { return ReadStream.ReadByte(); } public override void WriteByte(byte value) { ReadStream.WriteByte(value); } public override int ReadTimeout { get { return ReadStream.ReadTimeout; } set { ReadStream.ReadTimeout = value; } } public override int WriteTimeout { get { return WriteStream.WriteTimeout; } set { WriteStream.WriteTimeout = value; } } public override bool CanTimeout { get { return ReadStream.CanTimeout || WriteStream.CanTimeout; } } public override int GetHashCode() { return ReadStream.GetHashCode() ^ WriteStream.GetHashCode(); } protected override void Dispose(bool disposing) { if (disposing &amp;&amp; !leaveOpen) { try { ReadStream.Dispose(); } finally { WriteStream.Dispose(); } } } public override string ToString() { return "Read: " + ReadStream.ToString() + ", Write: " + WriteStream.ToString(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload