diff --git a/SharpConnect.WebServer.WebSocketTest.sln b/SharpConnect.WebServer.WebSocketTest.sln
index 87f053b..7aec467 100644
--- a/SharpConnect.WebServer.WebSocketTest.sln
+++ b/SharpConnect.WebServer.WebSocketTest.sln
@@ -1,18 +1,12 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26228.9
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.31702.278
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NETSTD", "NETSTD", "{7B52AB7D-5670-44FF-A63C-3CEC0E0270F7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NET20", "NET20", "{A504C555-2D0F-45F6-BE0F-ECE77E52AC54}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{A4D07531-CF2A-48C3-A5C5-0BC11FAC787D}"
-EndProject
-Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "WebServerApp", "tests\WebServerApp\WebServerApp.shproj", "{CF4BFB13-5A72-4328-9700-8F27BC1C570A}"
-EndProject
-Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SharpConnect.WebServer", "src\SharpConnect.WebServer\SharpConnect.WebServer.shproj", "{1585F301-4ECE-462C-A9D5-49BFE1C40041}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SharpConnect.WebServer", "builds\NETSTD\SharpConnect.WebServer\SharpConnect.WebServer.csproj", "{24CA242A-B8F4-450D-A08F-69B23F54B4C9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpConnect.WebServer", "builds\NET20\SharpConnect.WebServer\SharpConnect.WebServer.csproj", "{741A7428-705D-4928-B02C-0DB087FDE753}"
@@ -27,13 +21,21 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestLoad", "builds\NET20\Te
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestLoadNetStd", "builds\NETSTD\TestLoadNetStd\TestLoadNetStd.csproj", "{3FA078C1-4A8D-4D71-81C7-C8C978D8191C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestWsClient_NETSTD", "TestWsClient_NETSTD\TestWsClient_NETSTD.csproj", "{3D29EE04-0C3A-4564-93FF-299562EF5E1E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestWsClient_NETSTD", "TestWsClient_NETSTD\TestWsClient_NETSTD.csproj", "{3D29EE04-0C3A-4564-93FF-299562EF5E1E}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "WebServerApp_SH", "tests\WebServerApp\WebServerApp_SH.shproj", "{CF4BFB13-5A72-4328-9700-8F27BC1C570A}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SharpConnect.WebServer_SH", "src\SharpConnect.WebServer\SharpConnect.WebServer_SH.shproj", "{1585F301-4ECE-462C-A9D5-49BFE1C40041}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
src\SharpConnect.WebServer\SharpConnect.WebServer.projitems*{1585f301-4ece-462c-a9d5-49bfe1c40041}*SharedItemsImports = 13
+ src\SharpConnect.WebServer\SharpConnect.WebServer.projitems*{24ca242a-b8f4-450d-a08f-69b23f54b4c9}*SharedItemsImports = 5
tests\TestLoad\TestLoad.projitems*{24e7e45b-3716-4dd3-b4b0-10dff0a6211a}*SharedItemsImports = 4
+ tests\TestLoad\TestLoad.projitems*{3fa078c1-4a8d-4d71-81c7-c8c978d8191c}*SharedItemsImports = 5
src\SharpConnect.WebServer\SharpConnect.WebServer.projitems*{741a7428-705d-4928-b02c-0db087fde753}*SharedItemsImports = 4
+ src\SharpConnect.WebServer\SharpConnect.WebServer.projitems*{b8817170-2aca-4535-bc1b-0d79e1eb0fe6}*SharedItemsImports = 5
+ tests\WebServerApp\WebServerApp.projitems*{b8817170-2aca-4535-bc1b-0d79e1eb0fe6}*SharedItemsImports = 5
tests\WebServerApp\WebServerApp.projitems*{ce060f7f-6f5f-45fa-855f-81f28ff00d21}*SharedItemsImports = 4
tests\WebServerApp\WebServerApp.projitems*{cf4bfb13-5a72-4328-9700-8f27bc1c570a}*SharedItemsImports = 13
EndGlobalSection
@@ -300,7 +302,6 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {CF4BFB13-5A72-4328-9700-8F27BC1C570A} = {A4D07531-CF2A-48C3-A5C5-0BC11FAC787D}
{24CA242A-B8F4-450D-A08F-69B23F54B4C9} = {7B52AB7D-5670-44FF-A63C-3CEC0E0270F7}
{741A7428-705D-4928-B02C-0DB087FDE753} = {A504C555-2D0F-45F6-BE0F-ECE77E52AC54}
{CE060F7F-6F5F-45FA-855F-81F28FF00D21} = {A504C555-2D0F-45F6-BE0F-ECE77E52AC54}
diff --git a/SharpConnect.WebServer.sln b/SharpConnect.WebServer.sln
index c450ebf..e7d3c38 100644
--- a/SharpConnect.WebServer.sln
+++ b/SharpConnect.WebServer.sln
@@ -1,16 +1,12 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26228.9
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.31702.278
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NETSTD", "NETSTD", "{7B52AB7D-5670-44FF-A63C-3CEC0E0270F7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NET20", "NET20", "{A504C555-2D0F-45F6-BE0F-ECE77E52AC54}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{A4D07531-CF2A-48C3-A5C5-0BC11FAC787D}"
-EndProject
-Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "WebServerApp", "tests\WebServerApp\WebServerApp.shproj", "{CF4BFB13-5A72-4328-9700-8F27BC1C570A}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SharpConnect.WebServer", "builds\NETSTD\SharpConnect.WebServer\SharpConnect.WebServer.csproj", "{24CA242A-B8F4-450D-A08F-69B23F54B4C9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpConnect.WebServer", "builds\NET20\SharpConnect.WebServer\SharpConnect.WebServer.csproj", "{741A7428-705D-4928-B02C-0DB087FDE753}"
@@ -29,12 +25,18 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "TestLoad", "tests\TestLoad\
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SharpConnect.WebServer_SH", "src\SharpConnect.WebServer\SharpConnect.WebServer_SH.shproj", "{1585F301-4ECE-462C-A9D5-49BFE1C40041}"
EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "WebServerApp_SH", "tests\WebServerApp\WebServerApp_SH.shproj", "{CF4BFB13-5A72-4328-9700-8F27BC1C570A}"
+EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
src\SharpConnect.WebServer\SharpConnect.WebServer.projitems*{1585f301-4ece-462c-a9d5-49bfe1c40041}*SharedItemsImports = 13
+ src\SharpConnect.WebServer\SharpConnect.WebServer.projitems*{24ca242a-b8f4-450d-a08f-69b23f54b4c9}*SharedItemsImports = 5
tests\TestLoad\TestLoad.projitems*{24e7e45b-3716-4dd3-b4b0-10dff0a6211a}*SharedItemsImports = 4
+ tests\TestLoad\TestLoad.projitems*{3fa078c1-4a8d-4d71-81c7-c8c978d8191c}*SharedItemsImports = 5
src\SharpConnect.WebServer\SharpConnect.WebServer.projitems*{741a7428-705d-4928-b02c-0db087fde753}*SharedItemsImports = 4
tests\TestLoad\TestLoad.projitems*{a793836f-ecfa-4009-b36b-b812baa4c7e1}*SharedItemsImports = 13
+ src\SharpConnect.WebServer\SharpConnect.WebServer.projitems*{b8817170-2aca-4535-bc1b-0d79e1eb0fe6}*SharedItemsImports = 5
+ tests\WebServerApp\WebServerApp.projitems*{b8817170-2aca-4535-bc1b-0d79e1eb0fe6}*SharedItemsImports = 5
tests\WebServerApp\WebServerApp.projitems*{ce060f7f-6f5f-45fa-855f-81f28ff00d21}*SharedItemsImports = 4
tests\WebServerApp\WebServerApp.projitems*{cf4bfb13-5a72-4328-9700-8f27bc1c570a}*SharedItemsImports = 13
EndGlobalSection
@@ -271,7 +273,6 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {CF4BFB13-5A72-4328-9700-8F27BC1C570A} = {A4D07531-CF2A-48C3-A5C5-0BC11FAC787D}
{24CA242A-B8F4-450D-A08F-69B23F54B4C9} = {7B52AB7D-5670-44FF-A63C-3CEC0E0270F7}
{741A7428-705D-4928-B02C-0DB087FDE753} = {A504C555-2D0F-45F6-BE0F-ECE77E52AC54}
{CE060F7F-6F5F-45FA-855F-81F28FF00D21} = {A504C555-2D0F-45F6-BE0F-ECE77E52AC54}
diff --git a/builds/NET20/SharpConnect.WebServer/SharpConnect.WebServer.csproj b/builds/NET20/SharpConnect.WebServer/SharpConnect.WebServer.csproj
index f885897..b72df6c 100644
--- a/builds/NET20/SharpConnect.WebServer/SharpConnect.WebServer.csproj
+++ b/builds/NET20/SharpConnect.WebServer/SharpConnect.WebServer.csproj
@@ -22,6 +22,7 @@
prompt
4
true
+ true
pdbonly
diff --git a/src/SharpConnect.WebServer/HttpWebServer0/HttpRequest.cs b/src/SharpConnect.WebServer/HttpWebServer0/HttpRequest.cs
index 51414d2..d7540a6 100644
--- a/src/SharpConnect.WebServer/HttpWebServer0/HttpRequest.cs
+++ b/src/SharpConnect.WebServer/HttpWebServer0/HttpRequest.cs
@@ -13,6 +13,15 @@ enum ProcessReceiveBufferResult
NeedMore,
Complete
}
+ public abstract class DataStream
+ {
+ public abstract int CurrentReadPos { get; set; }
+ public abstract IntPtr GetUnManagedPtr();
+ public abstract byte[] GetManagedBuffer();
+ public abstract bool IsUnmanaged { get; }
+ public abstract int GetLength();
+ public DataStream Next { get; set; }
+ }
interface IHttpContext : ISendIO
{
@@ -23,8 +32,10 @@ interface IHttpContext : ISendIO
}
interface ISendIO
{
+ void EnqueueSendingData(DataStream dataStream);
void EnqueueSendingData(byte[] buffer, int len);
void SendIOStartSend();
+
}
public class WebRequestParameter
{
@@ -292,7 +303,6 @@ internal ProcessReceiveBufferResult LoadData()
//check if complete or not
_contentByteCount = 0; //reset
_uploadCanceled = false;//reset
-
_readPos = ParseHttpRequestHeader();
if (ContentLength > InMemMaxUploadBodySize)
@@ -466,8 +476,6 @@ int ParseHttpRequestHeader()
return readpos;
}
-
-
int _readPos;
FileStream _uploadTempFile = null;
bool _uploadCanceled = false;
diff --git a/src/SharpConnect.WebServer/HttpWebServer0/HttpResponse.cs b/src/SharpConnect.WebServer/HttpWebServer0/HttpResponse.cs
index f7a058c..558ce03 100644
--- a/src/SharpConnect.WebServer/HttpWebServer0/HttpResponse.cs
+++ b/src/SharpConnect.WebServer/HttpWebServer0/HttpResponse.cs
@@ -22,6 +22,7 @@ public enum WebResponseContentType : byte
ApplicationOctetStream,
ApplicationJson,
+ ApplicationWasm,
}
public enum TextCharSet : byte
@@ -104,6 +105,7 @@ internal void WriteHeader(StringBuilder stbuilder)
}
+
public abstract class HttpResponse : IDisposable
{
enum WriteContentState : byte
@@ -180,7 +182,7 @@ public void SetHeader(string key, string value)
///
public void Write(string str)
{
- //write to output stream
+ //write to output stream
byte[] bytes = Encoding.UTF8.GetBytes(str.ToCharArray());
//write to stream
_bodyMs.Write(bytes, 0, bytes.Length);
@@ -201,15 +203,26 @@ public void Write(byte[] rawBuffer)
public void End(string str)
{
//Write and End
+ _dataStream = null;
Write(str);
End();
}
public void End(byte[] data)
{
+ _dataStream = null;
_bodyMs.Write(data, 0, data.Length);
_contentByteCount += data.Length;
End();
}
+ //***
+
+ DataStream _dataStream;
+ public void End(DataStream dataStream)
+ {
+ _dataStream = dataStream;
+ _contentByteCount = dataStream.GetLength();
+ End();
+ }
public void ActualEnd()
{
@@ -278,18 +291,30 @@ public void ActualEnd()
_headerStBuilder.Append("\r\n");//end header part
_writeContentState = WriteContentState.HttpBody;
//-----------------------------------------------------------------
- //switch transfer encoding method of the body***
- byte[] headBuffer = Encoding.UTF8.GetBytes(_headerStBuilder.ToString().ToCharArray());
- byte[] dataToSend = new byte[headBuffer.Length + _contentByteCount];
- Buffer.BlockCopy(headBuffer, 0, dataToSend, 0, headBuffer.Length);
- var pos = _bodyMs.Position;
- _bodyMs.Position = 0;
- _bodyMs.Read(dataToSend, headBuffer.Length, _contentByteCount);
- //----------------------------------------------------
- //copy data to send buffer
-
- _sendIO.EnqueueSendingData(dataToSend, dataToSend.Length);
- //----------------------------------------------------
+ //TODO: switch transfer encoding method of the body***
+ if (_dataStream != null)
+ {
+ //MyByteDataStream headerBuffer = new MyByteDataStream();
+ //byte[] headBuffer = Encoding.UTF8.GetBytes(_headerStBuilder.ToString().ToCharArray());
+ //headerBuffer.SetData(headBuffer, headBuffer.Length);
+ //headerBuffer.Next = _dataStream;
+ //_sendIO.EnqueueSendingData(headerBuffer);
+
+ }
+ else
+ {
+ byte[] headBuffer = Encoding.UTF8.GetBytes(_headerStBuilder.ToString().ToCharArray());
+ byte[] dataToSend = new byte[headBuffer.Length + _contentByteCount]; //TODO: review here, use pool?
+ Buffer.BlockCopy(headBuffer, 0, dataToSend, 0, headBuffer.Length);//copy header to buffer
+
+ _bodyMs.Position = 0;//reset start writing pos
+ _bodyMs.Read(dataToSend, headBuffer.Length, _contentByteCount);
+ //----------------------------------------------------
+ //copy data to send buffer
+ _sendIO.EnqueueSendingData(dataToSend, dataToSend.Length);
+ //----------------------------------------------------
+ }
+
ResetAll();
}
break;
@@ -346,7 +371,7 @@ void StartSend()
void WriteContentBodyInChunkMode()
{
//----------------------------------------------------
- var pos = _bodyMs.Position;
+
_bodyMs.Position = 0;
byte[] bodyLengthInHex = Encoding.UTF8.GetBytes(_contentByteCount.ToString("X"));
int chuckedPrefixLength = bodyLengthInHex.Length;
@@ -404,6 +429,8 @@ static string GetContentType(WebResponseContentType contentType)
return "image/jpeg";
case WebResponseContentType.ImagePng:
return "image/png";
+ case WebResponseContentType.ApplicationWasm:
+ return "application/wasm";
case WebResponseContentType.ApplicationOctetStream:
return "application/octet-stream";
case WebResponseContentType.ApplicationJson:
@@ -426,6 +453,7 @@ static string GetContentType(WebResponseContentType contentType)
static void HeaderAppendConnectionType(StringBuilder headerStBuilder, bool keepAlive)
{
//always close connection
+ //headerStBuilder.Append("Connection: keep-alive\r\n");
//headerStBuilder.Append("Connection: close\r\n");
if (keepAlive)
{
diff --git a/src/SharpConnect.WebServer/HttpWebServer1/HttpContext.cs b/src/SharpConnect.WebServer/HttpWebServer1/HttpContext.cs
index 1069d9a..f915bee 100644
--- a/src/SharpConnect.WebServer/HttpWebServer1/HttpContext.cs
+++ b/src/SharpConnect.WebServer/HttpWebServer1/HttpContext.cs
@@ -39,7 +39,7 @@ namespace SharpConnect.WebServers
///
class HttpContext : IHttpContext, ISendIO
{
- const int RECV_BUFF_SIZE = 1024;
+ const int RECV_BUFF_SIZE = 1024 * 16;
readonly SocketAsyncEventArgs _send_a;
readonly SocketAsyncEventArgs _recv_a;
@@ -49,7 +49,7 @@ class HttpContext : IHttpContext, ISendIO
HttpRequestImpl _httpReq;
HttpResponseImpl _httpResp;
ReqRespHandler _reqHandler;
- HttpWebServer _ownerServer;
+ HttpWebServer _ownerServer;
public HttpContext(
HttpWebServer ownerServer,
@@ -149,7 +149,7 @@ void HandleReceive(RecvEventCode recvEventCode)
_httpResp.ActualEnd();
}
-// Reset();
+ // Reset();
}
break;
case ProcessReceiveBufferResult.NeedMore:
@@ -269,8 +269,8 @@ public void Dispose()
public void SendIOStartSend() => _sendIO.StartSendAsync();
- public void EnqueueSendingData(byte[] dataToSend, int count) => _sendIO.EnqueueOutputData(dataToSend, count);
-
+ public void EnqueueSendingData(byte[] dataToSend, int count) => _sendIO.EnqueueOutputData(dataToSend, count);
+ public void EnqueueSendingData(DataStream dataStream) => _sendIO.EnqueueOutputData(dataStream);
public int RecvByteTransfer => _recvIO.BytesTransferred;
public byte ReadByte(int pos) => _recvIO.ReadByte(pos);
diff --git a/src/SharpConnect.WebServer/HttpWebServer1/RecvIO_SendIO.cs b/src/SharpConnect.WebServer/HttpWebServer1/RecvIO_SendIO.cs
index 3b2d53a..8f4dd87 100644
--- a/src/SharpConnect.WebServer/HttpWebServer1/RecvIO_SendIO.cs
+++ b/src/SharpConnect.WebServer/HttpWebServer1/RecvIO_SendIO.cs
@@ -174,6 +174,10 @@ public void Reset()
}
_sendingQueue.Clear();
}
+ }
+ public void EnqueueOutputData(SharpConnect.WebServers.DataStream dd)
+ {
+
}
public void EnqueueOutputData(byte[] dataToSend, int count)
{
@@ -196,7 +200,7 @@ public void EnqueueOutputData(byte[] dataToSend, int count)
public int QueueCount => _sendingQueue.Count;
-
+
public void StartSendAsync()
{
lock (_stateLock)
diff --git a/src/SharpConnect.WebServer/HttpWebServer2/HttpsContext.cs b/src/SharpConnect.WebServer/HttpWebServer2/HttpsContext.cs
index f123f58..452e182 100644
--- a/src/SharpConnect.WebServer/HttpWebServer2/HttpsContext.cs
+++ b/src/SharpConnect.WebServer/HttpWebServer2/HttpsContext.cs
@@ -97,7 +97,7 @@ public HttpsContext(
internal bool CreatedFromPool { get; set; }
public void EnqueueSendingData(byte[] buffer, int len) => _sockStream.EnqueueSendData(buffer, len);
-
+ public void EnqueueSendingData(DataStream dataStream) => _sockStream.EnqueueSendData(dataStream);
public int RecvByteTransfer => _sockStream.ByteReadTransfered;
public byte ReadByte(int pos) => _sockStream.RecvReadByte(pos);
public void RecvCopyTo(int readpos, byte[] dstBuffer, int copyLen) => _sockStream.RecvCopyTo(readpos, dstBuffer, copyLen);
@@ -326,7 +326,7 @@ void HandleReceive(RecvEventCode recvEventCode)
}
break;
case ProcessReceiveBufferResult.NeedMore:
- {
+ {
}
break;
diff --git a/src/SharpConnect.WebServer/HttpWebServer2/HttpsWebServer.cs b/src/SharpConnect.WebServer/HttpWebServer2/HttpsWebServer.cs
index 170f457..cd87a4e 100644
--- a/src/SharpConnect.WebServer/HttpWebServer2/HttpsWebServer.cs
+++ b/src/SharpConnect.WebServer/HttpWebServer2/HttpsWebServer.cs
@@ -22,7 +22,7 @@ public HttpsWebServer(int port, bool localOnly, ReqRespHandler
{
- //when accept new client
+ //when accept new client
- int recvSize = 1024 * 2;
+ int recvSize = 1024 * 2;
int sendSize = 1024 * 2;
HttpsContext context = new HttpsContext(this, recvSize, sendSize);
context.BindReqHandler(_reqHandler); //client handler
#if DEBUG
- context.dbugForHttps = true;
+ context.dbugForHttps = true;
#endif
- context.BindSocket(clientSocket); //*** bind to client socket
- //for ssl -> cert must not be null
- context.StartReceive(_serverCert);
- //TODO::
- //USE https context from Pool????
- //{
- // HttpsContext context = _contextPool.Pop();
- // context.BindSocket(clientSocket); //*** bind to client socket
- // context.StartReceive(UseSsl ? _serverCert : null);
- //}
- });
+ context.BindSocket(clientSocket); //*** bind to client socket
+ //for ssl -> cert must not be null
+ context.StartReceive(_serverCert);
+ //TODO::
+ //USE https context from Pool????
+ //{
+ // HttpsContext context = _contextPool.Pop();
+ // context.BindSocket(clientSocket); //*** bind to client socket
+ // context.StartReceive(UseSsl ? _serverCert : null);
+ //}
+ });
//------------------------------
@@ -156,7 +159,6 @@ internal bool CheckWebSocketUpgradeRequest(HttpsContext httpConn)
}
HttpRequest httpReq = httpConn.HttpReq;
- HttpResponse httpResp = httpConn.HttpResp;
string upgradeKey = httpReq.GetHeaderKey("Upgrade");
if (upgradeKey != null && upgradeKey == "websocket")
{
diff --git a/src/SharpConnect.WebServer/HttpWebServer2/RecvIO_SendIO_2.cs b/src/SharpConnect.WebServer/HttpWebServer2/RecvIO_SendIO_2.cs
index b471377..8e4f1c4 100644
--- a/src/SharpConnect.WebServer/HttpWebServer2/RecvIO_SendIO_2.cs
+++ b/src/SharpConnect.WebServer/HttpWebServer2/RecvIO_SendIO_2.cs
@@ -143,7 +143,7 @@ public int ReadBufferTo(byte[] dstBuffer, int dstIndex, int count)
return availableLen;
}
else
- {
+ {
Buffer.BlockCopy(_largeBuffer, _startAt + _readIndex, dstBuffer, _startAt + dstIndex, count);
_readIndex += count;
return count;
@@ -251,6 +251,10 @@ public void Reset()
}
_sendingQueue.Clear();
}
+ }
+ public void EnqueueOutputData(SharpConnect.WebServers.DataStream dataStream)
+ {
+
}
public void EnqueueOutputData(byte[] dataToSend, int count)
{
diff --git a/src/SharpConnect.WebServer/HttpWebServer2/SockAsyncNetworkStream.cs b/src/SharpConnect.WebServer/HttpWebServer2/SockAsyncNetworkStream.cs
index abbea37..47f11f2 100644
--- a/src/SharpConnect.WebServer/HttpWebServer2/SockAsyncNetworkStream.cs
+++ b/src/SharpConnect.WebServer/HttpWebServer2/SockAsyncNetworkStream.cs
@@ -5,6 +5,7 @@
using System.Net.Sockets;
using System.Net.Security;
using System.Threading;
+using SharpConnect.WebServers;
namespace SharpConnect.Internal2
{
@@ -68,6 +69,7 @@ protected void RaiseRecvCompleted(int byteCount)
internal abstract byte RecvReadByte(int pos);
internal abstract void EnqueueSendData(byte[] buffer, int len);
+ internal abstract void EnqueueSendData(DataStream dataStream);
internal abstract void RecvCopyTo(int readpos, byte[] dstBuffer, int copyLen);
internal abstract void UnbindSocket();
@@ -166,7 +168,10 @@ internal override void EnqueueSendData(byte[] buffer, int len)
{
_sendIO.EnqueueOutputData(buffer, len);
}
-
+ internal override void EnqueueSendData(DataStream dataStream)
+ {
+ _sendIO.EnqueueOutputData(dataStream);
+ }
public void Bind(Socket socket)
{
@@ -1036,7 +1041,11 @@ internal override void EnqueueSendData(byte[] buffer, int len)
_enqueueOutputData.Write(buffer, 0, len);
}
}
-
+ internal override void EnqueueSendData(DataStream dataStream)
+ {
+ //TODO: implement this
+ throw new NotImplementedException();
+ }
readonly object _startSendLock = new object();
bool _startSending;
diff --git a/src/SharpConnect.WebServer/WebSocket/PlainWebSocketConn.cs b/src/SharpConnect.WebServer/WebSocket/PlainWebSocketConn.cs
index 247d94b..a38e043 100644
--- a/src/SharpConnect.WebServer/WebSocket/PlainWebSocketConn.cs
+++ b/src/SharpConnect.WebServer/WebSocket/PlainWebSocketConn.cs
@@ -144,8 +144,9 @@ public void Bind(Socket clientSocket, byte[] connReplMsg)
//--------
}
void ISendIO.EnqueueSendingData(byte[] buffer, int len) => _sendIO.EnqueueOutputData(buffer, len);
+ void ISendIO.EnqueueSendingData(DataStream dataStream) => _sendIO.EnqueueOutputData(dataStream);
void ISendIO.SendIOStartSend() => _sendIO.StartSendAsync();
-
+
bool _beginWebSocketMode;
void HandleReceivedData(RecvEventCode recvCode)
{
@@ -165,9 +166,9 @@ void HandleReceivedData(RecvEventCode recvCode)
if (text.StartsWith("HTTP/1.1 101 Switching Protocols\r\nUpgrade"))
{
//clear prev buffer
-
+
_webSocketReqParser.ClearMemBuffer();
- _beginWebSocketMode = true;
+ _beginWebSocketMode = true;
_recvIO.StartReceive();
////*** clear prev buffer before new recv
diff --git a/src/SharpConnect.WebServer/WebSocket/SecureWebSocketConn.cs b/src/SharpConnect.WebServer/WebSocket/SecureWebSocketConn.cs
index a240afa..5416289 100644
--- a/src/SharpConnect.WebServer/WebSocket/SecureWebSocketConn.cs
+++ b/src/SharpConnect.WebServer/WebSocket/SecureWebSocketConn.cs
@@ -104,6 +104,7 @@ void ISendIO.EnqueueSendingData(byte[] buffer, int len)
{
_clientStream.EnqueueSendData(buffer, len);
}
+ void ISendIO.EnqueueSendingData(DataStream dataStream) => _clientStream.EnqueueSendData(dataStream);
void ISendIO.SendIOStartSend() => _clientStream.StartSend();
diff --git a/tests/WebServerApp/Program.cs b/tests/WebServerApp/Program.cs
index e10a814..ad9c03e 100644
--- a/tests/WebServerApp/Program.cs
+++ b/tests/WebServerApp/Program.cs
@@ -8,10 +8,16 @@ namespace SharpConnect
static class Program
{
static void Main(string[] args)
- {
+ {
Main_Http();
//Main_Https();
}
+
+ static void HandleWebReq(WebServers.HttpRequest req, WebServers.HttpResponse resp)
+ {
+ resp.End("OK");
+ }
+
static List s_contextList = new List();
diff --git a/tests/WebServerApp/WebServerApp.shproj b/tests/WebServerApp/WebServerApp_SH.shproj
similarity index 100%
rename from tests/WebServerApp/WebServerApp.shproj
rename to tests/WebServerApp/WebServerApp_SH.shproj