Beginning with NSCLDAQ version 11.0, the ring item body has been modified to allow it to include timestamp, event source, and barrier information either emitted by or intended for the event builder. This header follows immediately after the ring item header but is optionally present. If it is not present, there is a single 32-bit integer whose value is zero to indicate no body header is present. Otherwise, it is present. The structure of the body header is as follows:
The fields of this structure are as follows:
The inclusive size in bytes. You can also think of items that don't have a body header as having a header size of zero. We promise to maintain backwards compatility by adding any new elements to the end of the body header.
The value of the event/globally synchronized timestamp at the time this ring item was initially formed.
Unique identifier of the source of this ring item.
If the item was part of a barrier synchronization amongst the data sources, this field will be non-zero and represent the type of the barrier. If zero, this item was not part of a barrier.
To be even more explicit, the format of a complete ring item with a body header present is as follows:
Table 3-3. Ring Item With Body Header
Description | Size (bytes) | |
---|---|---|
Header | Inclusive Size | 4 |
Type | 4 | |
Body Header | Size = 20 | 4 |
Timestamp | 8 | |
Source ID | 4 | |
Barrier Type | 4 | |
Body | Data... | >=0 |
Alternatively, the complete ring item without a body header present looks like the following: