Декорируем Stream (запрет чтения после заданного тайм-аута) - C#
Формулировка задачи:
Задача такая, нужно задекорировать класс Stream(запрещает считывание после заданного тайм аута). Расскажите что к чему. И если можно с примерами.
Решение задачи: «Декорируем Stream (запрет чтения после заданного тайм-аута)»
textual
Листинг программы
public class TimeoutedStream : Stream { public int TimeoutToRead { get; set; } Stream Stream { get; set; } public TimeoutedStream(Stream stream) { this.Stream = stream; ReadTimeout = 1000; } private DateTime lastReadTime; public override int Read(byte[] buffer, int offset, int count) { var interval = (DateTime.Now - lastReadTime).TotalMilliseconds; lastReadTime = DateTime.Now; if (interval < ReadTimeout) return Stream.Read(buffer, offset, count); throw new TimeoutException(); } #region Перевызовы базового потока public override bool CanRead { get { return Stream.CanRead; } } public override bool CanSeek { get { return Stream.CanSeek; } } public override bool CanWrite { get { return Stream.CanWrite; } } public override void Flush() { Stream.Flush(); } public override long Length { get { return Stream.Length; } } public override long Position { get { return Stream.Position; } set { Stream.Position = value; } } public override long Seek(long offset, SeekOrigin origin) { Stream.Seek(offset, origin); } public override void SetLength(long value) { Stream.SetLength(value); } public override void Write(byte[] buffer, int offset, int count) { Stream.Write(buffer, offset, count); } #endregion }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д