summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core/StreamWrapper.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core/StreamWrapper.cs')
-rw-r--r--Xamarin.Forms.Core/StreamWrapper.cs81
1 files changed, 81 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core/StreamWrapper.cs b/Xamarin.Forms.Core/StreamWrapper.cs
new file mode 100644
index 00000000..5d4e2cae
--- /dev/null
+++ b/Xamarin.Forms.Core/StreamWrapper.cs
@@ -0,0 +1,81 @@
+using System;
+using System.IO;
+
+namespace Xamarin.Forms
+{
+ internal class StreamWrapper : Stream
+ {
+ readonly Stream _wrapped;
+
+ public StreamWrapper(Stream wrapped)
+ {
+ if (wrapped == null)
+ throw new ArgumentNullException("wrapped");
+
+ _wrapped = wrapped;
+ }
+
+ public override bool CanRead
+ {
+ get { return _wrapped.CanRead; }
+ }
+
+ public override bool CanSeek
+ {
+ get { return _wrapped.CanSeek; }
+ }
+
+ public override bool CanWrite
+ {
+ get { return _wrapped.CanWrite; }
+ }
+
+ public override long Length
+ {
+ get { return _wrapped.Length; }
+ }
+
+ public override long Position
+ {
+ get { return _wrapped.Position; }
+ set { _wrapped.Position = value; }
+ }
+
+ public event EventHandler Disposed;
+
+ public override void Flush()
+ {
+ _wrapped.Flush();
+ }
+
+ public override int Read(byte[] buffer, int offset, int count)
+ {
+ return _wrapped.Read(buffer, offset, count);
+ }
+
+ public override long Seek(long offset, SeekOrigin origin)
+ {
+ return _wrapped.Seek(offset, origin);
+ }
+
+ public override void SetLength(long value)
+ {
+ _wrapped.SetLength(value);
+ }
+
+ public override void Write(byte[] buffer, int offset, int count)
+ {
+ _wrapped.Write(buffer, offset, count);
+ }
+
+ protected override void Dispose(bool disposing)
+ {
+ _wrapped.Dispose();
+ EventHandler eh = Disposed;
+ if (eh != null)
+ eh(this, EventArgs.Empty);
+
+ base.Dispose(disposing);
+ }
+ }
+} \ No newline at end of file