An OBJECT_DATAGRAM carries a single object in a datagram.
An Object received in an OBJECT_DATAGRAM message has an Object
Forwarding Preference = Datagram. To send an Object with Object
Forwarding Preference = Datagram, determine the length of the header and
payload and send the Object as datagram. In certain scenarios where the object
size can be larger than maximum datagram size for the session, the Object
will be dropped.
OBJECT_DATAGRAM {
Type (i),
Track Alias (i),
Group ID (i),
Object ID (i),
Publisher Priority (8),
[Extension Headers Length (i),
Extension headers (...)],
Object Payload (..),
}
The Type field takes the form 0b0000000X (or the set of values from 0x00 to 0x01). The LSB of the type determines if the Extensions Headers Length and Extension headers are present. If an endpoint receives a datagram with Type 0x01 and Extension Headers Length is 0, it MUST close the session with Protocol Violation.
There is no explicit length field. The entirety of the transport datagram following Publisher Priority contains the Object Payload.