Middleware Pipeline¶
Nalix.Network has two middleware layers:
- buffer middleware before deserialization
- packet middleware around handler execution
Source mapping¶
src/Nalix.Network/Middleware/NetworkBufferMiddlewarePipeline.cssrc/Nalix.Network/Middleware/INetworkBufferMiddleware.cssrc/Nalix.Network/Middleware/MiddlewarePipeline.cssrc/Nalix.Network/Middleware/IPacketMiddleware.cs
Buffer middleware¶
Buffer middleware works on raw IBufferLease data before a packet exists.
Use it for:
- decryption
- decompression
- low-level validation
- early frame rejection
Contract:
Task<IBufferLease> InvokeAsync(
IBufferLease buffer,
IConnection connection,
CancellationToken ct,
Func<IBufferLease, CancellationToken, Task<IBufferLease>> next)
Packet middleware¶
Packet middleware works on PacketContext<TPacket> after deserialization.
Use it for:
- permissions
- timeouts
- rate limiting
- concurrency limits
- auditing
Contract:
Ordering¶
Ordering is driven by:
[MiddlewareOrder][MiddlewareStage]
The packet pipeline supports:
InboundOutboundBoth
Built-in middleware¶
Common built-in packet middleware:
PermissionMiddlewareRateLimitMiddlewareConcurrencyMiddlewareTimeoutMiddleware
Mental model¶
socket buffer
-> buffer middleware
-> deserialize packet
-> packet middleware
-> handler
-> response path
Basic usage¶
options.NetworkPipeline.Use(new SampleAuditBufferMiddleware());
options.PacketPipeline.Use(new SampleAuditMiddleware());