Struct SystemMsg
- Namespace
- DatabentoDotNet.Dbn
- Assembly
- DatabentoDotNet.Dbn.dll
A non-error message from the Databento Live Subscription Gateway, also used for heartbeats.
public readonly struct SystemMsg : IRecord<SystemMsg>
- Implements
- Inherited Members
Remarks
This is the DBN v2 layout, unchanged in v3, at 320 bytes. Version 1 is 80 bytes and carries
only the message text — see SystemMsgV1. The record has no ts_recv, so
its index timestamp is TsEvent.
Fields
Header
The common header.
public readonly RecordHeader Header
Field Value
Msg
The message from the Databento gateway.
public readonly CStr303 Msg
Field Value
RawCode
The raw wire byte behind Code. Not validated on decode — pass it to TryFromSystemCode(byte, out SystemCode) for a checked conversion.
public readonly byte RawCode
Field Value
Properties
Code
The type of system message. Undefined wire bytes cast through to an unnamed value rather than throwing; see RawCode. Unset on a record upgraded from DBN v1 whose message matched none of the known texts.
public SystemCode Code { get; }
Property Value
IndexTs
The record's index timestamp: the one to sort by, and the one to key a symbol map with. Nanoseconds since the UNIX epoch.
public ulong IndexTs { get; }
Property Value
Remarks
This is usually ts_recv, not TsEvent. Fourteen of
the twenty-one record structs carry a ts_recv and index on it; the rest have no
ts_recv at all and fall back to the header's ts_event. Port of upstream's
Record::raw_index_ts (record/traits.rs:52-54), whose default body is
ts_event and which the #[dbn(index_ts)] field attribute overrides per struct
(record.rs, compat.rs).
The distinction is not cosmetic: ts_event and ts_recv can fall on opposite
sides of UTC midnight, so resolving a symbol by the wrong one silently returns the
previous day's symbol, or nothing, with no error anywhere.
This is a raw timestamp and can be UndefTimestamp. Convert it with ToUtcDate(ulong) or TryToUtcDate(ulong, out LocalDate), which check the sentinel.
WireSize
The struct's exact size on the wire, in bytes, excluding any trailing ts_out.
public static int WireSize { get; }
Property Value
Methods
HasRType(RType)
Reports whether SystemMsg is the layout for records carrying
rtype.
public static bool HasRType(RType rtype)
Parameters
rtypeRTypeThe record type read from a record header.
Returns
- bool
true if
rtypeis one of the record types this struct decodes. This is necessary but not sufficient to identify the record — see the remarks on IRecord<TSelf>.