Fix build_init vcxproj to correctly detect changes in config.h.
[mono.git] / mcs / class / System.IO.Compression / SharpCompress / IO / ListeningStream.cs
1 using System.IO;
2 using SharpCompress.Common;
3
4 namespace SharpCompress.IO
5 {
6     internal class ListeningStream : Stream
7     {
8         private long currentEntryTotalReadBytes;
9         private IExtractionListener listener;
10
11         public ListeningStream(IExtractionListener listener, Stream stream)
12         {
13             Stream = stream;
14             this.listener = listener;
15         }
16
17         protected override void Dispose(bool disposing)
18         {
19             if (disposing)
20             {
21                 Stream.Dispose();
22             }
23         }
24
25         public Stream Stream { get; private set; }
26
27         public override bool CanRead
28         {
29             get { return Stream.CanRead; }
30         }
31
32         public override bool CanSeek
33         {
34             get { return Stream.CanSeek; }
35         }
36
37         public override bool CanWrite
38         {
39             get { return Stream.CanWrite; }
40         }
41
42         public override void Flush()
43         {
44             Stream.Flush();
45         }
46
47         public override long Length
48         {
49             get { return Stream.Length; }
50         }
51
52         public override long Position
53         {
54             get { return Stream.Position; }
55             set { Stream.Position = value; }
56         }
57
58         public override int Read(byte[] buffer, int offset, int count)
59         {
60             int read = Stream.Read(buffer, offset, count);
61             currentEntryTotalReadBytes += read;
62             listener.FireCompressedBytesRead(currentEntryTotalReadBytes, currentEntryTotalReadBytes);
63             return read;
64         }
65
66         public override long Seek(long offset, SeekOrigin origin)
67         {
68             return Stream.Seek(offset, origin);
69         }
70
71         public override void SetLength(long value)
72         {
73             Stream.SetLength(value);
74         }
75
76         public override void Write(byte[] buffer, int offset, int count)
77         {
78             Stream.Write(buffer, offset, count);
79         }
80     }
81 }