Skip to content

Commit 516464c

Browse files
committed
Implement RFC 7541 compliant HPACK decoder and encoder
1 parent ea5ca54 commit 516464c

8 files changed

Lines changed: 764 additions & 332 deletions

File tree

src/TurboHttp.Tests/HpackTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using TurboHttp.Protocol;
2+
using TurboHttp.Protocol.TurboHttp.Protocol;
23

34
namespace TurboHttp.Tests;
45

src/TurboHttp.Tests/Http2DecoderTests.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using TurboHttp.Protocol;
2+
using TurboHttp.Protocol.TurboHttp.Protocol;
23

34
namespace TurboHttp.Tests;
45

@@ -173,8 +174,7 @@ public async Task Decode_HeadersAndData_ReturnsCompleteResponse()
173174
public void Decode_HeadersWithEndStream_NoBodyResponse()
174175
{
175176
var hpackEncoder = new HpackEncoder(useHuffman: false);
176-
var headerBlock = hpackEncoder.Encode(new List<(string, string)>
177-
{ (":status", "204") });
177+
var headerBlock = hpackEncoder.Encode([new HpackHeader(":status", "204")], );
178178
var headersFrame = new HeadersFrame(3, headerBlock,
179179
endStream: true, endHeaders: true).Serialize();
180180

@@ -189,13 +189,13 @@ public void Decode_HeadersWithEndStream_NoBodyResponse()
189189
[Fact]
190190
public async Task Decode_ContinuationFrames_Reassembled()
191191
{
192-
var hpackEncoder = new HpackEncoder(useHuffman: false);
193-
var headerBlock = hpackEncoder.Encode(new List<(string, string)>
192+
var hpackEncoder = new HpackEncoder();
193+
var headerBlock = hpackEncoder.Encode(new List<HpackHeader>
194194
{
195195
(":status", "200"),
196196
("content-type", "application/json"),
197197
("x-request-id", "abc-123"),
198-
});
198+
}, );
199199

200200
var split1 = headerBlock[..(headerBlock.Length / 2)];
201201
var split2 = headerBlock[(headerBlock.Length / 2)..];

0 commit comments

Comments
 (0)