pub struct SubgroupObjectMeta {
pub object_id: u64,
pub extension_headers_len: u64,
pub payload_length: u64,
pub status: Option<u64>,
pub wire_len: u64,
}Expand description
The framing of one draft-19 subgroup object, without its payload.
Produced by SubgroupObjectReader::read_object_meta for callers that
forward an object’s bytes verbatim and never inspect the payload.
Fields§
§object_id: u64Resolved absolute Object ID.
extension_headers_len: u64Byte length of the properties block’s contents, excluding its length prefix.
payload_length: u64Declared payload length. Zero when status is Some.
status: Option<u64>Object status wire code, present only when the payload is empty.
wire_len: u64Total bytes this object occupies on the wire, prefix fields included.
Implementations§
Source§impl SubgroupObjectMeta
impl SubgroupObjectMeta
Sourcepub fn payload_permission(&self) -> Option<PayloadPermission>
pub fn payload_permission(&self) -> Option<PayloadPermission>
What the Object Status registry says about this object’s payload, or
None if the registry has no row for its status.
Draft-19 Section 15.9, Table 16 gives the registry a “Payload” column, and Section 11.2.1.1 makes it the rule: an Object has an empty payload unless its status is registered as permitting one. Table 16 fills the column in for the three statuses draft-19 assigns — 0x0 Normal is “Yes”, 0x3 End of Group and 0x4 End of Track are “No” — and requires every future registration to fill it in too.
status is None for an object whose payload length is non-zero,
because the encoding puts a status field only where the payload does
not go. Such an object’s status is Normal, the one row permitting the
payload it is carrying, so this answers
PayloadPermission::Permitted rather than None.
The None this does return means something else entirely: a status
code with no row in the registry, for which the draft supplies no
answer and this must not invent one. SubgroupObjectReader never
produces such a meta — it refuses an unassigned code while decoding —
but every field here is public, so a caller that assembled a meta by
hand, or carried a status across from a draft numbering the set
differently, can hold one.
Answered from the status alone. payload_length is not consulted: on a
status that permits a payload it says only whether this particular
object took the offer, and on one that forbids a payload a non-zero
length is the malformation a caller uses this to detect, not evidence
about the rule.
Trait Implementations§
Source§impl Clone for SubgroupObjectMeta
impl Clone for SubgroupObjectMeta
Source§fn clone(&self) -> SubgroupObjectMeta
fn clone(&self) -> SubgroupObjectMeta
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more