Декорируем 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
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы