diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-04-01 20:36:06 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-04-01 20:36:06 -0400 |
| commit | 733b891f529c2458d65560f556edf68052be2846 (patch) | |
| tree | 4c6de5d23e73f8fea02513a6936bdb01a39e7b62 /Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/OutputStream.cs | |
| parent | d4d6314c5ac4515ad8ddf7c8636245ed2d93d4c8 (diff) | |
stub out cifs support
Diffstat (limited to 'Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/OutputStream.cs')
| -rw-r--r-- | Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/OutputStream.cs | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/OutputStream.cs b/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/OutputStream.cs new file mode 100644 index 0000000000..0e6189f0cb --- /dev/null +++ b/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/OutputStream.cs @@ -0,0 +1,86 @@ +using System; +using System.IO; + +namespace SharpCifs.Util.Sharpen +{ + public class OutputStream : IDisposable + { + protected Stream Wrapped; + + public static implicit operator OutputStream (Stream s) + { + return Wrap (s); + } + + public static implicit operator Stream (OutputStream s) + { + return s.GetWrappedStream (); + } + + public virtual void Close () + { + if (Wrapped != null) { + //Stream.`Close` method deleted + //Wrapped.Close (); + Wrapped.Dispose(); + } + } + + public void Dispose () + { + Close (); + } + + public virtual void Flush () + { + if (Wrapped != null) { + Wrapped.Flush (); + } + } + + internal Stream GetWrappedStream () + { + // Always create a wrapper stream (not directly Wrapped) since the subclass + // may be overriding methods that need to be called when used through the Stream class + return new WrappedSystemStream (this); + } + + static internal OutputStream Wrap (Stream s) + { + OutputStream stream = new OutputStream (); + stream.Wrapped = s; + return stream; + } + + public virtual void Write (int b) + { + if (Wrapped is WrappedSystemStream) + ((WrappedSystemStream)Wrapped).OutputStream.Write (b); + else { + if (Wrapped == null) + throw new NotImplementedException (); + Wrapped.WriteByte ((byte)b); + } + } + + public virtual void Write (byte[] b) + { + Write (b, 0, b.Length); + } + + public virtual void Write (byte[] b, int offset, int len) + { + if (Wrapped is WrappedSystemStream) + ((WrappedSystemStream)Wrapped).OutputStream.Write (b, offset, len); + else { + if (Wrapped != null) { + Wrapped.Write (b, offset, len); + } else { + for (int i = 0; i < len; i++) { + Write (b[i + offset]); + } + } + } + } + } +} |
