perf(net): borrow inbound packet storage

Decode headers, optional fields, fragments, and single-fragment messages directly over pooled datagrams. Copy only fragment state that crosses a datagram lifetime, preserve synchronous dispatch and ACK ordering, and lock the path to the owned decoder with differential and zero-allocation tests.
This commit is contained in:
Erik 2026-07-25 05:58:55 +02:00
parent 7211bb1bf7
commit e928c5dd02
18 changed files with 1329 additions and 66 deletions

View file

@ -75,6 +75,42 @@ public class MessageFragmentTests
Assert.Equal(0, consumed);
}
[Fact]
public void TryParse_ZeroFragmentCount_ReturnsNull()
{
var header = new MessageFragmentHeader
{
TotalSize = MessageFragmentHeader.Size,
Count = 0,
Index = 0,
};
byte[] buf = new byte[MessageFragmentHeader.Size];
header.Pack(buf);
var (frag, consumed) = MessageFragment.TryParse(buf);
Assert.Null(frag);
Assert.Equal(0, consumed);
}
[Fact]
public void TryParse_IndexOutsideFragmentCount_ReturnsNull()
{
var header = new MessageFragmentHeader
{
TotalSize = MessageFragmentHeader.Size,
Count = 2,
Index = 2,
};
byte[] buf = new byte[MessageFragmentHeader.Size];
header.Pack(buf);
var (frag, consumed) = MessageFragment.TryParse(buf);
Assert.Null(frag);
Assert.Equal(0, consumed);
}
[Fact]
public void TryParse_ConsumesExactlyOneFragment_LeavesRemainderForCaller()
{