using System; using System.IO; namespace ScreenConnect; public class PartialStreamWrapper : ReadOnlyStream { private Stream innerStream; private long length; private bool ownsStream; public override long Position { get; set; } public PartialStreamWrapper(Stream innerStream, long length, bool ownsStream = false) { this.innerStream = innerStream.AssertArgumentNonNull("innerStream"); this.length = length; this.ownsStream = ownsStream; } public override int Read(byte[] buffer, int offset, int count) { int count2 = Math.Min((int)(length - Position), count); int num = innerStream.Read(buffer, offset, count2); Position += num; return num; } protected override void Dispose(bool disposing) { if (disposing && ownsStream) { innerStream.Dispose(); } } }