aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/RandomAccessFile.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/RandomAccessFile.cs')
-rw-r--r--Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/RandomAccessFile.cs87
1 files changed, 87 insertions, 0 deletions
diff --git a/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/RandomAccessFile.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/RandomAccessFile.cs
new file mode 100644
index 000000000..bf3596212
--- /dev/null
+++ b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/RandomAccessFile.cs
@@ -0,0 +1,87 @@
+using System;
+using System.IO;
+
+namespace SharpCifs.Util.Sharpen
+{
+ public class RandomAccessFile
+ {
+ private FileStream _stream;
+
+ public RandomAccessFile (FilePath file, string mode) : this(file.GetPath (), mode)
+ {
+ }
+
+ public RandomAccessFile (string file, string mode)
+ {
+ if (mode.IndexOf ('w') != -1)
+ _stream = new FileStream (file, FileMode.OpenOrCreate, FileAccess.ReadWrite);
+ else
+ _stream = new FileStream (file, FileMode.Open, FileAccess.Read);
+ }
+
+ public void Close ()
+ {
+ //Stream.`Close` method deleted
+ //_stream.Close ();
+ _stream.Dispose();
+ }
+
+ public long GetFilePointer ()
+ {
+ return _stream.Position;
+ }
+
+ public long Length ()
+ {
+ return _stream.Length;
+ }
+
+ public int Read (byte[] buffer)
+ {
+ int r = _stream.Read (buffer, 0, buffer.Length);
+ return r > 0 ? r : -1;
+ }
+
+ public int Read (byte[] buffer, int start, int size)
+ {
+ return _stream.Read (buffer, start, size);
+ }
+
+ public void ReadFully (byte[] buffer, int start, int size)
+ {
+ while (size > 0) {
+ int num = _stream.Read (buffer, start, size);
+ if (num == 0) {
+ throw new EofException ();
+ }
+ size -= num;
+ start += num;
+ }
+ }
+
+ public void Seek (long pos)
+ {
+ _stream.Position = pos;
+ }
+
+ public void SetLength (long len)
+ {
+ _stream.SetLength (len);
+ }
+
+ public void Write (int value)
+ {
+ _stream.Write (BitConverter.GetBytes (value), 0, 4);
+ }
+
+ public void Write (byte[] buffer)
+ {
+ _stream.Write (buffer, 0, buffer.Length);
+ }
+
+ public void Write (byte[] buffer, int start, int size)
+ {
+ _stream.Write (buffer, start, size);
+ }
+ }
+}