Class CatalogValidator
Checks a catalog against the registration rules of 03-wire-protocol § 12 before anything is encoded or decoded against it.
public static class CatalogValidator
- Inheritance
-
CatalogValidator
- Inherited Members
Remarks
A server validates at Start, so a bad declaration fails the application, never a session; a client validates what it receives, so a broken or
hostile server fails at WELCOME, never mid-stream. The rules are the ones that make decoding well-defined: widths the codecs accept, bounds a
quantizer can use without losing the round trip, groups a u8 mask can address, grids whose cell index fits, lists whose elements decode as
numbers, and built-ins whose shape is the engine's, not merely their name.
Hostile input is a catalog too. Every collection may contain null elements after a parse; each one is a problem, never a crash.
A parameter the codec kind does not read is refused rather than ignored: a decoder that honoured, say, fixedBytes on a known codec would read a
different width than the one that encoded it.
Fields
MaxGridCells
The most cells a grid may have: its cell index must fit comfortably in 32 bits and its counts in memory.
public const long MaxGridCells = 16777216
Field Value
Methods
IsListElement(CodecKind)
Whether a codec may be a list element: numeric, byte-aligned, and independent of the frame.
public static bool IsListElement(CodecKind kind)
Parameters
kindCodecKindThe element kind.
Returns
Validate(Catalog)
Throws CatalogException listing every rule catalog breaks.
public static void Validate(Catalog catalog)
Parameters
catalogCatalogThe catalog, canonical or as declared.