namespace ScreenConnect; public abstract class BufferStream : BufferStreamBase { public override int ReadByte() { if (!RequestBufferCount(1)) { return -1; } return ReadOne(); } public override void WriteByte(byte value) { DemandBufferCount(1); WriteOne(value); } public override int Read(byte[] buffer, int offset, int count) { if (!RequestBufferCount(1)) { return 0; } CursorBuffer destination = CursorBuffer.From(buffer, offset, count); return Read(ref destination); } public override void Write(byte[] buffer, int offset, int count) { CursorBuffer source = CursorBuffer.From(buffer, offset, count); while (source.RemainingCount != 0) { DemandBufferCount(1); Write(ref source); } } }