Packet Registry¶
This page covers packet discovery and registry APIs in Nalix.Codec.DataFrames.
Source mapping¶
src/Nalix.Codec/DataFrames/PacketRegistryFactory.cssrc/Nalix.Codec/DataFrames/PacketRegistry.cs
Main types¶
PacketRegistryFactoryPacketRegistry
Public members at a glance¶
| Type | Public members |
|---|---|
PacketRegistryFactory |
RegisterPacket, RegisterAllPackets, RegisterPacketAssembly, IncludeAssembly(Assembly), IncludeAssembly(string), IncludeCurrentDomain, RegisterCurrentDomainPackets, IncludeNamespace, IncludeNamespaceRecursive, CreateCatalog, Compute |
PacketRegistry |
Configure(IObjectPoolManager), LoadFromNamespace(...), LoadFromAssemblyPath(...), IsKnownMagic, IsRegistered, Deserialize, TryDeserialize, DeserializerCount |
PacketRegistryFactory¶
PacketRegistryFactory is the fluent builder for an immutable PacketRegistry.
The constructor pre-registers built-in signal packets:
ControlHandshakeSessionResumeDirective
Common workflows¶
- Register explicit packet types.
- Register all packet types from an
Assembly. - Register all packet types from a
.dllfile path. - Scan loaded assemblies, then filter by namespace.
Basic usage¶
PacketRegistryFactory factory = new();
factory.IncludeCurrentDomain()
.IncludeNamespaceRecursive("MyApp.Packets");
PacketRegistry registry = factory.CreateCatalog();
Assembly path usage¶
PacketRegistryFactory factory = new();
factory.RegisterPacketAssembly(@"C:\apps\MyPackets.dll", requireAttribute: true);
PacketRegistry registry = factory.CreateCatalog();
PacketRegistry¶
PacketRegistry is the runtime, immutable, thread-safe lookup catalog.
What it provides¶
- Fast magic-number lookup.
- Packet-type registration checks.
- Deserialization from raw packet bytes.
Runtime use¶
if (registry.TryDeserialize(buffer, out IPacket? packet))
{
Console.WriteLine(packet.Header.OpCode);
}
Static convenience loaders¶
LoadFromAssemblyPath(assemblyPath, requirePacketAttribute)LoadFromNamespace(packetNamespace, recursive)LoadFromNamespace(assemblyPath, packetNamespace, recursive)
Practical notes¶
- Use one shared registry instance across server runtime and client SDK whenever possible.
- Prefer
ConfigurePacketRegistry(...)in hosting if you already have a pre-built registry. - Prefer namespace filters when you want tighter discovery boundaries than full assembly scans.