Struct StatMsgV1
- Namespace
- DatabentoDotNet.Dbn
- Assembly
- DatabentoDotNet.Dbn.dll
The DBN v1 and v2 layout of StatMsg, 64 bytes.
public readonly struct StatMsgV1 : IRecord<StatMsgV1>
- Implements
- Inherited Members
Remarks
One struct covers both versions: upstream's v2 module re-exports the v1 struct
unchanged, so v1 and v2 statistics records are byte-identical and only v3 differs. The two
differences from v3 are that Quantity is 32-bit rather than 64-bit — sentinel
included, which is what makes UpgradeTo() more than a widening — and that the
trailing reserved block is 6 bytes rather than 18.
Fields
ChannelId
The channel ID assigned by Databento, an integer counting up from zero.
public readonly ushort ChannelId
Field Value
Header
The common header.
public readonly RecordHeader Header
Field Value
Price
The value for price statistics, where every 1 unit corresponds to 1e-9. UndefPrice when unused.
public readonly long Price
Field Value
Quantity
The value for non-price statistics. UndefStatQuantityV1 — not UndefStatQuantity — when unused.
public readonly int Quantity
Field Value
RawStatType
The raw wire value behind StatType. Not validated on decode — pass it to TryFromStatType(ushort, out StatType) for a checked conversion.
public readonly ushort RawStatType
Field Value
RawUpdateAction
The raw wire byte behind UpdateAction. Not validated on decode — pass it to TryFromStatUpdateAction(byte, out StatUpdateAction) for a checked conversion.
public readonly byte RawUpdateAction
Field Value
Sequence
The message sequence number assigned at the venue.
public readonly uint Sequence
Field Value
StatFlags
Additional flags associated with certain statistic types.
public readonly byte StatFlags
Field Value
TsInDelta
The matching-engine-sending timestamp, in nanoseconds before TsRecv.
public readonly int TsInDelta
Field Value
TsRecv
The capture-server-received timestamp, in nanoseconds since the UNIX epoch. This, not TsEvent, is the record's index timestamp.
public readonly ulong TsRecv
Field Value
TsRef
The reference timestamp of the statistic value, in nanoseconds since the UNIX epoch. UndefTimestamp when unused.
public readonly ulong TsRef
Field Value
Properties
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.
StatType
The statistic this record carries. Undefined wire values cast through to an unnamed value rather than throwing; see RawStatType.
public StatType StatType { get; }
Property Value
UpdateAction
Whether the statistic is newly added or deleted. Undefined wire bytes cast through to an unnamed value rather than throwing; see RawUpdateAction.
public StatUpdateAction UpdateAction { get; }
Property Value
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 StatMsgV1 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>.
UpgradeTo()
Converts this record to the current-version StatMsg.
public StatMsg UpgradeTo()
Returns
- StatMsg
The equivalent v3 record.