diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-09-02 22:42:13 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-09-02 22:42:13 -0400 |
| commit | 78165d78a23c4f8f05706619c5021754e99097f6 (patch) | |
| tree | a6066d824c562e2972b49db5705822771f6dc004 /SocketHttpListener/SocketStream.cs | |
| parent | da3d8894a8574c9ec3d2ce122a9f60ab2b04511d (diff) | |
update SocketHttpListener
Diffstat (limited to 'SocketHttpListener/SocketStream.cs')
| -rw-r--r-- | SocketHttpListener/SocketStream.cs | 86 |
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); + } + } +} |
