Table of Contents

Class Catalog

Namespace
Typhon.Protocol
Assembly
Typhon.Protocol.dll

Everything a client needs to decode a Typhon stream without any generated code or knowledge of the server's C# types: which archetypes are replicated, which fields each carries, in what codec and group, plus events, commands, grids and metrics.

public sealed class Catalog
Inheritance
Catalog
Inherited Members

Remarks

It is called the catalog, not the schema: "schema" is Typhon's storage schema, which rules SCHEMA-01…07 constrain and which this deliberately does not describe. The catalog travels in WELCOME as canonical JSON and is hashed so a returning client can offer the hash back and skip it.

Nothing in here describes server memory. No CLR type name and no offset appears anywhere — not the field's offset within its component, nor the component's column offset within the cluster. A client decodes bytes; handing out the layout would couple the wire to storage and make renaming a C# type a wire break.

Constructors

Catalog()

public Catalog()

Properties

App

The application the catalog describes.

public CatalogApp App { get; init; }

Property Value

CatalogApp

Archetypes

The replicated archetypes, ordered so that each one's position is its Idx.

public CatalogArchetype[] Archetypes { get; init; }

Property Value

CatalogArchetype[]

Commands

The commands a client may send, in index order.

public CatalogCommand[] Commands { get; init; }

Property Value

CatalogCommand[]

Enums

Enum value names by enum name. A value's index in the array is the integer that travels.

public Dictionary<string, string[]> Enums { get; init; }

Property Value

Dictionary<string, string[]>

Events

The declared events, in index order.

public CatalogEvent[] Events { get; init; }

Property Value

CatalogEvent[]

Grids

The spatial grids.

public CatalogGrid[] Grids { get; init; }

Property Value

CatalogGrid[]

Limits

Server-wide ceilings a client acts on.

public CatalogLimits Limits { get; init; }

Property Value

CatalogLimits

Metrics

The metrics the server publishes, in index order.

public CatalogMetric[] Metrics { get; init; }

Property Value

CatalogMetric[]

Protocol

The wire protocol version this catalog is written for.

public CatalogProtocolVersion Protocol { get; init; }

Property Value

CatalogProtocolVersion

SessionKinds

The session kinds the application declares (W21). Informational: the engine never interprets a kind.

public string[] SessionKinds { get; init; }

Property Value

string[]

Tick

Tick timing.

public CatalogTick Tick { get; init; }

Property Value

CatalogTick