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 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 Object ID (delta decoded to an absolute value).
extension_headers_len: u64Byte length of the extension-header 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 status permits it a non-empty payload.
The same question SubgroupObject::permits_payload answers, from the
declared length and the wire code rather than from the bytes. A relay
that forwards an object verbatim reads it through
SubgroupObjectReader::read_object_meta and never copies the payload,
so asking this must not require having it.
An absent status answers PayloadPermission::Permitted rather than
None. A meta has no status only when its payload length is non-zero,
so the object has a status — the encoding just does not spell it.
None means the code is one this draft leaves unassigned, and so one it
gives no payload rule for. That is not reachable through
SubgroupObjectReader::read_object_meta, which refuses such a code
before it can reach the field, but the fields here are public and a meta
assembled by hand — by a relay carrying a status across from a draft
that numbers them differently, say — can hold anything a varint can. The
answer there is that this draft has none, not that the payload is
forbidden.
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