|
|
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace IllusionInjector.Utilities
- {
- class BlockingStream : Stream
- {
- public BlockingStream(Stream bstr)
- {
- BaseStream = bstr;
- }
-
- public Stream BaseStream { get; set; }
-
- public override bool CanRead => BaseStream.CanRead;
-
- public override bool CanSeek => BaseStream.CanSeek;
-
- public override bool CanWrite => BaseStream.CanWrite;
-
- public override long Length => BaseStream.Length;
-
- public override long Position { get => BaseStream.Position; set => BaseStream.Position = value; }
-
- public override void Flush()
- {
- BaseStream.Flush();
- }
-
- public override int Read(byte[] buffer, int offset, int count)
- {
- var read = 0;
- do
- {
- read += BaseStream.Read(buffer, read, count-read);
- }
- while (read < count);
-
- return count;
- }
-
- public override long Seek(long offset, SeekOrigin origin)
- {
- return BaseStream.Seek(offset, origin);
- }
-
- public override void SetLength(long value)
- {
- BaseStream.SetLength(value);
- }
-
- public override void Write(byte[] buffer, int offset, int count)
- {
- BaseStream.Write(buffer, offset, count);
- }
- }
- }
|