pub struct SubgroupHeader {
pub header_type: u8,
pub track_alias: VarInt,
pub group_id: VarInt,
pub subgroup_id: VarInt,
pub publisher_priority: Option<u8>,
}Fields§
§header_type: u8§track_alias: VarInt§group_id: VarInt§subgroup_id: VarInt§publisher_priority: Option<u8>Implementations§
Source§impl SubgroupHeader
impl SubgroupHeader
Sourcepub fn decode(buf: &mut impl Buf) -> Result<Self, CodecError>
pub fn decode(buf: &mut impl Buf) -> Result<Self, CodecError>
Decode a subgroup header, Type field included.
A Type spelled in more than one byte is refused first, by
wide_type_refusal, which decodes it in full so stream_type_error
can tell a padding or SETUP stream — both assigned, both several bytes
wide — from a Type Table 3 does not assign. Only the last of those ends
the session.
Sourcepub fn encode(&self, buf: &mut impl BufMut)
pub fn encode(&self, buf: &mut impl BufMut)
Serialize the header exactly as its Type byte describes it.
Infallible, and so willing to write a Type draft-19 Section 11.4.2
tells an endpoint to reject — including a reserved-mode Type this
module’s own Self::decode refuses to read back. Prefer
Self::encode_checked, which refuses those Types instead.
Sourcepub fn encode_checked(&self, buf: &mut impl BufMut) -> Result<(), CodecError>
pub fn encode_checked(&self, buf: &mut impl BufMut) -> Result<(), CodecError>
Serialize the header, refusing a Type value draft-19 forbids.
Errors with CodecError::InvalidField for exactly the Types draft-19
Section 11.4.2 lists as invalid (the same set Self::decode refuses),
before any byte is written, so a refused header leaves buf untouched.
Everything else is written by Self::encode.
The check belongs on the encode side as well as the decode side because
the two halves would otherwise disagree about which streams exist: a
reserved-mode header written by Self::encode cannot be read back by
Self::decode, and a codec used to rewrite captured traffic would
emit a stream it could not then parse.
pub fn has_properties(&self) -> bool
Sourcepub fn subgroup_id_mode(&self) -> u8
pub fn subgroup_id_mode(&self) -> u8
The subgroup-ID mode: (header_type & 0x06) >> 1.
0 = no subgroup ID on the wire and it is zero; 1 = the subgroup ID
is the first object’s ID; 2 = an explicit ID follows the Group ID;
3 = reserved. Exposed because the mask is module-private and
dispatch::AnySubgroupHeader::subgroup_id_mode cannot read it.
3 never comes back from Self::decode, which refuses the Types
carrying it. header_type is a public field, so a hand-built header
can still report it; Self::encode_checked is what refuses to put
one on the wire.
pub fn is_end_of_group(&self) -> bool
Sourcepub fn is_first_object(&self) -> bool
pub fn is_first_object(&self) -> bool
true when the FIRST_OBJECT bit (0x40) is set, signaling the first
object on this stream is the original publisher’s first object in the
subgroup. Added in draft-18.
Trait Implementations§
Source§impl Clone for SubgroupHeader
impl Clone for SubgroupHeader
Source§fn clone(&self) -> SubgroupHeader
fn clone(&self) -> SubgroupHeader
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more