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-17 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>
Whether this object’s stated status allows it a non-empty payload.
None when the object states no status at all. On a subgroup stream
that is every object that carries bytes: draft-17 Section 10.4.2 puts
the status field on the wire only when the Object Payload Length is
zero, and Section 10.2.1.1 says Normal “is implicit for any non-zero
length object”. An absent status is therefore not an unknown one — it is
Normal, spelled by the payload’s own presence — but it is not a stated
permission, and this method reports only what the object states.
Some otherwise, reading draft-17 Section 10.2.1.1’s rule off the code:
“Any object with a status code other than zero MUST have an empty
payload.” Zero permits, everything else forbids, which holds for codes
beyond the three the draft assigns as well — the rule is arithmetic, not
a lookup, so it does not go stale if a later draft assigns more.
Worth having even though a stated status here always sits beside a zero payload length, because the framing is not the destination. A caller forwarding this object onto a datagram, where the payload is whatever follows the header rather than a counted field, needs to know the object may not be given bytes there either; the length it read on this stream says nothing about that.
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