aboutsummaryrefslogtreecommitdiff
path: root/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/InputStream.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/InputStream.cs')
-rw-r--r--Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/InputStream.cs301
1 files changed, 155 insertions, 146 deletions
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/InputStream.cs b/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/InputStream.cs
index 2f3f070b5..33256e5db 100644
--- a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/InputStream.cs
+++ b/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/InputStream.cs
@@ -4,147 +4,156 @@ using System.IO;
namespace SharpCifs.Util.Sharpen
{
public class InputStream : IDisposable
- {
- private long _mark;
- protected Stream Wrapped;
- protected Stream BaseStream;
-
- public static implicit operator InputStream (Stream s)
- {
- return Wrap (s);
- }
-
- public static implicit operator Stream (InputStream s)
- {
- return s.GetWrappedStream ();
- }
-
- public virtual int Available ()
- {
- if (Wrapped is WrappedSystemStream)
- return ((WrappedSystemStream)Wrapped).InputStream.Available ();
- return 0;
- }
-
- public virtual void Close ()
- {
- if (Wrapped != null) {
+ {
+ private long _mark;
+ protected Stream Wrapped;
+ protected Stream BaseStream;
+
+ public static implicit operator InputStream(Stream s)
+ {
+ return Wrap(s);
+ }
+
+ public static implicit operator Stream(InputStream s)
+ {
+ return s.GetWrappedStream();
+ }
+
+ public virtual int Available()
+ {
+ if (Wrapped is WrappedSystemStream)
+ return ((WrappedSystemStream)Wrapped).InputStream.Available();
+ return 0;
+ }
+
+ public virtual void Close()
+ {
+ if (Wrapped != null)
+ {
//Stream.`Close` method deleted
- //Wrapped.Close ();
+ //Wrapped.Close();
Wrapped.Dispose();
}
- }
-
- public void Dispose ()
- {
- Close ();
- }
-
- 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);
- }
-
- public virtual void Mark (int readlimit)
- {
- if (Wrapped is WrappedSystemStream)
- ((WrappedSystemStream)Wrapped).InputStream.Mark (readlimit);
- else {
- if (BaseStream is WrappedSystemStream)
- ((WrappedSystemStream)BaseStream).OnMark (readlimit);
- if (Wrapped != null)
- _mark = Wrapped.Position;
- }
- }
-
- public virtual bool MarkSupported ()
- {
- if (Wrapped is WrappedSystemStream)
- return ((WrappedSystemStream)Wrapped).InputStream.MarkSupported ();
- return ((Wrapped != null) && Wrapped.CanSeek);
- }
-
- public virtual int Read ()
- {
- if (Wrapped == null) {
- throw new NotImplementedException ();
- }
- return Wrapped.ReadByte ();
- }
-
- public virtual int Read (byte[] buf)
- {
- return Read (buf, 0, buf.Length);
- }
-
- public virtual int Read (byte[] b, int off, int len)
- {
- if (Wrapped is WrappedSystemStream)
- return ((WrappedSystemStream)Wrapped).InputStream.Read (b, off, len);
-
- if (Wrapped != null) {
- int num = Wrapped.Read (b, off, len);
- return ((num <= 0) ? -1 : num);
- }
- int totalRead = 0;
- while (totalRead < len) {
- int nr = Read ();
- if (nr == -1)
- return -1;
- b[off + totalRead] = (byte)nr;
- totalRead++;
- }
- return totalRead;
- }
-
- public virtual void Reset ()
- {
- if (Wrapped is WrappedSystemStream)
- ((WrappedSystemStream)Wrapped).InputStream.Reset ();
- else {
- if (Wrapped == null)
- throw new IOException ();
- Wrapped.Position = _mark;
- }
- }
-
- public virtual long Skip (long cnt)
- {
- if (Wrapped is WrappedSystemStream)
- return ((WrappedSystemStream)Wrapped).InputStream.Skip (cnt);
-
- long n = cnt;
- while (n > 0) {
- if (Read () == -1)
- return cnt - n;
- n--;
- }
- return cnt - n;
- }
-
- internal virtual bool CanSeek ()
- {
- if (Wrapped != null)
- return Wrapped.CanSeek;
- return false;
- }
-
- internal virtual long Position {
- get
- {
- if (Wrapped != null)
- return Wrapped.Position;
- throw new NotSupportedException ();
- }
- set {
- if (Wrapped != null)
- Wrapped.Position = value;
- else
- throw new NotSupportedException ();
- }
- }
+ }
+
+ public void Dispose()
+ {
+ Close();
+ }
+
+ 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);
+ }
+
+ public virtual void Mark(int readlimit)
+ {
+ if (Wrapped is WrappedSystemStream)
+ ((WrappedSystemStream)Wrapped).InputStream.Mark(readlimit);
+ else
+ {
+ if (BaseStream is WrappedSystemStream)
+ ((WrappedSystemStream)BaseStream).OnMark(readlimit);
+ if (Wrapped != null)
+ _mark = Wrapped.Position;
+ }
+ }
+
+ public virtual bool MarkSupported()
+ {
+ if (Wrapped is WrappedSystemStream)
+ return ((WrappedSystemStream)Wrapped).InputStream.MarkSupported();
+ return ((Wrapped != null) && Wrapped.CanSeek);
+ }
+
+ public virtual int Read()
+ {
+ if (Wrapped == null)
+ {
+ throw new NotImplementedException();
+ }
+ return Wrapped.ReadByte();
+ }
+
+ public virtual int Read(byte[] buf)
+ {
+ return Read(buf, 0, buf.Length);
+ }
+
+ public virtual int Read(byte[] b, int off, int len)
+ {
+ if (Wrapped is WrappedSystemStream)
+ return ((WrappedSystemStream)Wrapped).InputStream.Read(b, off, len);
+
+ if (Wrapped != null)
+ {
+ int num = Wrapped.Read(b, off, len);
+ return ((num <= 0) ? -1 : num);
+ }
+ int totalRead = 0;
+ while (totalRead < len)
+ {
+ int nr = Read();
+ if (nr == -1)
+ return -1;
+ b[off + totalRead] = (byte)nr;
+ totalRead++;
+ }
+ return totalRead;
+ }
+
+ public virtual void Reset()
+ {
+ if (Wrapped is WrappedSystemStream)
+ ((WrappedSystemStream)Wrapped).InputStream.Reset();
+ else
+ {
+ if (Wrapped == null)
+ throw new IOException();
+ Wrapped.Position = _mark;
+ }
+ }
+
+ public virtual long Skip(long cnt)
+ {
+ if (Wrapped is WrappedSystemStream)
+ return ((WrappedSystemStream)Wrapped).InputStream.Skip(cnt);
+
+ long n = cnt;
+ while (n > 0)
+ {
+ if (Read() == -1)
+ return cnt - n;
+ n--;
+ }
+ return cnt - n;
+ }
+
+ internal virtual bool CanSeek()
+ {
+ if (Wrapped != null)
+ return Wrapped.CanSeek;
+ return false;
+ }
+
+ internal virtual long Position
+ {
+ get
+ {
+ if (Wrapped != null)
+ return Wrapped.Position;
+ throw new NotSupportedException();
+ }
+ set
+ {
+ if (Wrapped != null)
+ Wrapped.Position = value;
+ else
+ throw new NotSupportedException();
+ }
+ }
public virtual long Length
{
@@ -152,18 +161,18 @@ namespace SharpCifs.Util.Sharpen
{
if (Wrapped != null)
{
- return Wrapped.Length;
+ return Wrapped.Length;
}
throw new NotSupportedException();
}
}
- static internal InputStream Wrap (Stream s)
- {
- InputStream stream = new InputStream ();
- stream.Wrapped = s;
- return stream;
- }
- }
+ static internal InputStream Wrap(Stream s)
+ {
+ InputStream stream = new InputStream();
+ stream.Wrapped = s;
+ return stream;
+ }
+ }
}