|
@@ -99,30 +99,34 @@ namespace PlatformBenchmarks
|
|
base.SessionReceive(server, e);
|
|
base.SessionReceive(server, e);
|
|
PipeStream pipeStream = e.Session.Stream.ToPipeStream();
|
|
PipeStream pipeStream = e.Session.Stream.ToPipeStream();
|
|
HttpToken token = (HttpToken)e.Session.Tag;
|
|
HttpToken token = (HttpToken)e.Session.Tag;
|
|
- var result = pipeStream.IndexOf(_line.Data);
|
|
|
|
|
|
+ var result = pipeStream.IndexOfLine();
|
|
while (result.End != null)
|
|
while (result.End != null)
|
|
{
|
|
{
|
|
if (result.Length == 2)
|
|
if (result.Length == 2)
|
|
{
|
|
{
|
|
- if (token.CurrentRequest != null)
|
|
|
|
|
|
+ pipeStream.ReadFree(result.Length);
|
|
|
|
+ if (Program.Debug)
|
|
{
|
|
{
|
|
- token.Requests.Enqueue(token.CurrentRequest);
|
|
|
|
- token.CurrentRequest = null;
|
|
|
|
- token.ThreadDispatcher.Enqueue(token);
|
|
|
|
|
|
+ if (token.CurrentRequest != null)
|
|
|
|
+ {
|
|
|
|
+ token.Requests.Enqueue(token.CurrentRequest);
|
|
|
|
+ token.CurrentRequest = null;
|
|
|
|
+ token.ThreadDispatcher.Enqueue(token);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- pipeStream.ReadFree(result.Length);
|
|
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ OnStartRequest(token.CurrentRequest, e.Session, token, pipeStream);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
if (token.CurrentRequest == null)
|
|
if (token.CurrentRequest == null)
|
|
{
|
|
{
|
|
var request = new RequestData();
|
|
var request = new RequestData();
|
|
-
|
|
|
|
byte[] buffer = null;
|
|
byte[] buffer = null;
|
|
- if (Program.Debug)
|
|
|
|
- buffer = new byte[result.Length];
|
|
|
|
- else
|
|
|
|
- buffer = System.Buffers.ArrayPool<byte>.Shared.Rent(result.Length);
|
|
|
|
|
|
+ buffer = new byte[result.Length];
|
|
pipeStream.Read(buffer, 0, result.Length);
|
|
pipeStream.Read(buffer, 0, result.Length);
|
|
request.Data = new ArraySegment<byte>(buffer, 0, result.Length);
|
|
request.Data = new ArraySegment<byte>(buffer, 0, result.Length);
|
|
AnalysisAction(request);
|
|
AnalysisAction(request);
|
|
@@ -143,7 +147,7 @@ namespace PlatformBenchmarks
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (pipeStream.Length > 0)
|
|
if (pipeStream.Length > 0)
|
|
- result = pipeStream.IndexOf(_line.Data);
|
|
|
|
|
|
+ result = pipeStream.IndexOfLine();
|
|
else
|
|
else
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -287,8 +291,6 @@ namespace PlatformBenchmarks
|
|
OnWriteContentLength(stream, token);
|
|
OnWriteContentLength(stream, token);
|
|
await Default(stream, token, session);
|
|
await Default(stream, token, session);
|
|
}
|
|
}
|
|
- if (!Program.Debug)
|
|
|
|
- data.Dispose();
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|