aboutsummaryrefslogtreecommitdiff
path: root/SocketHttpListener/SocketStream.cs
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-09-03 03:29:18 -0400
committerGitHub <noreply@github.com>2017-09-03 03:29:18 -0400
commit9cf5cd1e5b504619875be6c5b9e4d76a990686e7 (patch)
treed6f6b236ac4da21746a9f3d7ce0cbe8b33761434 /SocketHttpListener/SocketStream.cs
parentfd62146e464a35993afbd9f277c01eee2c3d4f51 (diff)
parent2084678266e7e65dde077fc2caee63c0051bf3db (diff)
Merge pull request #2862 from MediaBrowser/dev
Dev
Diffstat (limited to 'SocketHttpListener/SocketStream.cs')
-rw-r--r--SocketHttpListener/SocketStream.cs86
1 files changed, 86 insertions, 0 deletions
diff --git a/SocketHttpListener/SocketStream.cs b/SocketHttpListener/SocketStream.cs
new file mode 100644
index 000000000..a4f31eab9
--- /dev/null
+++ b/SocketHttpListener/SocketStream.cs
@@ -0,0 +1,86 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SocketHttpListener
+{
+ public class SocketStream : Stream
+ {
+ private readonly Socket _socket;
+
+ public SocketStream(Socket socket, bool ownsSocket)
+ {
+ _socket = socket;
+ }
+
+ public override void Flush()
+ {
+ }
+
+ public override bool CanRead
+ {
+ get { return true; }
+ }
+ public override bool CanSeek
+ {
+ get { return false; }
+ }
+ public override bool CanWrite
+ {
+ get { return true; }
+ }
+ public override long Length
+ {
+ get { throw new NotImplementedException(); }
+ }
+ public override long Position
+ {
+ get { throw new NotImplementedException(); }
+ set { throw new NotImplementedException(); }
+ }
+
+ public override void Write(byte[] buffer, int offset, int count)
+ {
+ _socket.Send(buffer, offset, count, SocketFlags.None);
+ }
+
+ public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
+ {
+ return _socket.BeginSend(buffer, offset, count, SocketFlags.None, callback, state);
+ }
+
+ public override void EndWrite(IAsyncResult asyncResult)
+ {
+ _socket.EndSend(asyncResult);
+ }
+
+ public override void SetLength(long value)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override long Seek(long offset, SeekOrigin origin)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override int Read(byte[] buffer, int offset, int count)
+ {
+ return _socket.Receive(buffer, offset, count, SocketFlags.None);
+ }
+
+ public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
+ {
+ return _socket.BeginReceive(buffer, offset, count, SocketFlags.None, callback, state);
+ }
+
+ public override int EndRead(IAsyncResult asyncResult)
+ {
+ return _socket.EndReceive(asyncResult);
+ }
+ }
+}