Skip to content

Commit 64dd07e

Browse files
Re-introduce PooledAwait as of benchmarking
1 parent 2e8d0b4 commit 64dd07e

File tree

3 files changed

+73
-70
lines changed

3 files changed

+73
-70
lines changed

Engine/GenHTTP.Engine.csproj

+67-66
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,68 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
2-
3-
<PropertyGroup>
4-
5-
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
6-
7-
<LangVersion>10.0</LangVersion>
8-
<Nullable>enable</Nullable>
9-
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
10-
11-
<AssemblyVersion>8.3.0.0</AssemblyVersion>
12-
<FileVersion>8.3.0.0</FileVersion>
13-
<Version>8.3.0</Version>
14-
15-
<Authors>Andreas Nägeli</Authors>
16-
<Company />
17-
18-
<PackageLicenseFile>LICENSE</PackageLicenseFile>
19-
<PackageProjectUrl>https://genhttp.org/</PackageProjectUrl>
20-
21-
<Description>Lightweight web server written in pure C# with few dependencies to 3rd-party libraries.</Description>
22-
<PackageTags>HTTP Embedded Webserver Website Server Library C# Standard Engine</PackageTags>
23-
24-
<PublishRepositoryUrl>true</PublishRepositoryUrl>
25-
<IncludeSymbols>true</IncludeSymbols>
26-
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
27-
28-
<GenerateDocumentationFile>true</GenerateDocumentationFile>
29-
<NoWarn>CS1591,CS1587,CS1572,CS1573</NoWarn>
30-
31-
<PackageIcon>icon.png</PackageIcon>
32-
33-
</PropertyGroup>
34-
35-
<ItemGroup>
36-
<None Remove="Resources\Error.html" />
37-
<None Remove="Resources\ErrorStacked.html" />
38-
<None Remove="Resources\Template.html" />
39-
</ItemGroup>
40-
41-
<ItemGroup>
42-
<EmbeddedResource Include="Resources\ErrorStacked.html" />
43-
<EmbeddedResource Include="Resources\Error.html" />
44-
<EmbeddedResource Include="Resources\Template.html" />
45-
</ItemGroup>
46-
47-
<ItemGroup>
48-
49-
<None Include="..\LICENSE" Pack="true" PackagePath="\" />
50-
<None Include="..\Resources\icon.png" Pack="true" PackagePath="\" />
51-
52-
</ItemGroup>
53-
54-
<ItemGroup>
55-
56-
<ProjectReference Include="..\API\GenHTTP.Api.csproj" />
57-
<ProjectReference Include="..\Modules\IO\GenHTTP.Modules.IO.csproj" />
58-
<ProjectReference Include="..\Modules\Placeholders\GenHTTP.Modules.Placeholders.csproj" />
59-
<ProjectReference Include="..\Modules\ErrorHandling\GenHTTP.Modules.ErrorHandling.csproj" />
60-
61-
<PackageReference Include="System.IO.Pipelines" Version="8.0.0" />
62-
63-
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
64-
65-
</ItemGroup>
66-
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
5+
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
6+
7+
<LangVersion>10.0</LangVersion>
8+
<Nullable>enable</Nullable>
9+
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
10+
11+
<AssemblyVersion>8.3.0.0</AssemblyVersion>
12+
<FileVersion>8.3.0.0</FileVersion>
13+
<Version>8.3.0</Version>
14+
15+
<Authors>Andreas Nägeli</Authors>
16+
<Company />
17+
18+
<PackageLicenseFile>LICENSE</PackageLicenseFile>
19+
<PackageProjectUrl>https://genhttp.org/</PackageProjectUrl>
20+
21+
<Description>Lightweight web server written in pure C# with few dependencies to 3rd-party libraries.</Description>
22+
<PackageTags>HTTP Embedded Webserver Website Server Library C# Standard Engine</PackageTags>
23+
24+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
25+
<IncludeSymbols>true</IncludeSymbols>
26+
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
27+
28+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
29+
<NoWarn>CS1591,CS1587,CS1572,CS1573</NoWarn>
30+
31+
<PackageIcon>icon.png</PackageIcon>
32+
33+
</PropertyGroup>
34+
35+
<ItemGroup>
36+
<None Remove="Resources\Error.html" />
37+
<None Remove="Resources\ErrorStacked.html" />
38+
<None Remove="Resources\Template.html" />
39+
</ItemGroup>
40+
41+
<ItemGroup>
42+
<EmbeddedResource Include="Resources\ErrorStacked.html" />
43+
<EmbeddedResource Include="Resources\Error.html" />
44+
<EmbeddedResource Include="Resources\Template.html" />
45+
</ItemGroup>
46+
47+
<ItemGroup>
48+
49+
<None Include="..\LICENSE" Pack="true" PackagePath="\" />
50+
<None Include="..\Resources\icon.png" Pack="true" PackagePath="\" />
51+
52+
</ItemGroup>
53+
54+
<ItemGroup>
55+
56+
<ProjectReference Include="..\API\GenHTTP.Api.csproj" />
57+
<ProjectReference Include="..\Modules\IO\GenHTTP.Modules.IO.csproj" />
58+
<ProjectReference Include="..\Modules\Placeholders\GenHTTP.Modules.Placeholders.csproj" />
59+
<ProjectReference Include="..\Modules\ErrorHandling\GenHTTP.Modules.ErrorHandling.csproj" />
60+
<PackageReference Include="PooledAwait" Version="1.0.49" />
61+
62+
<PackageReference Include="System.IO.Pipelines" Version="8.0.0" />
63+
64+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
65+
66+
</ItemGroup>
67+
6768
</Project>

Engine/Protocol/RequestBuffer.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
using System.Buffers;
33
using System.IO.Pipelines;
44
using System.Threading;
5-
using System.Threading.Tasks;
65

76
using GenHTTP.Engine.Infrastructure.Configuration;
87

8+
using PooledAwait;
9+
910
namespace GenHTTP.Engine.Protocol
1011
{
1112

@@ -53,7 +54,7 @@ internal RequestBuffer(PipeReader reader, NetworkConfiguration configuration)
5354

5455
#region Functionality
5556

56-
internal async ValueTask<long?> Read(bool force = false)
57+
internal async PooledValueTask<long?> Read(bool force = false)
5758
{
5859
if ((Data.Length == 0) || force)
5960
{

Engine/Protocol/RequestParser.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using GenHTTP.Api.Routing;
1010

1111
using GenHTTP.Engine.Infrastructure.Configuration;
12+
using PooledAwait;
1213

1314
namespace GenHTTP.Engine.Protocol
1415
{
@@ -191,7 +192,7 @@ private static async ValueTask<bool> TryReadHeader(RequestBuffer buffer, Request
191192
return false;
192193
}
193194

194-
private static async ValueTask<SequencePosition?> FindPosition(RequestBuffer buffer, char delimiter)
195+
private static async PooledValueTask<SequencePosition?> FindPosition(RequestBuffer buffer, char delimiter)
195196
{
196197
if (buffer.ReadRequired)
197198
{
@@ -221,7 +222,7 @@ private static async ValueTask<bool> TryReadHeader(RequestBuffer buffer, Request
221222
return ReadToken(buffer, delimiter, LINE_ENDING, skipNext, skipFirst, skipDelimiter);
222223
}
223224

224-
private static async ValueTask<string?> ReadToken(RequestBuffer buffer, char delimiter, char[] boundaries, ushort skipNext = 0, ushort skipFirst = 0, bool skipDelimiter = true)
225+
private static async PooledValueTask<string?> ReadToken(RequestBuffer buffer, char delimiter, char[] boundaries, ushort skipNext = 0, ushort skipFirst = 0, bool skipDelimiter = true)
225226
{
226227
var position = await FindPosition(buffer, delimiter).ConfigureAwait(false);
227228

0 commit comments

Comments
 (0)