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 before it is narrowed,
by wide_type_refusal: every Type the subgroup form admits is a
single byte, and the wider Types Table 3 assigns are not subgroup
headers.
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.
The type byte is taken as the authority on framing and is written
through unexamined, which is what makes this infallible. A value built
by hand can therefore name a type draft-17 forbids — the reserved
SUBGROUP_ID_MODE 0b11 above all — and produce a stream the receiver
must answer with a PROTOCOL_VIOLATION. Prefer Self::encode_checked,
which refuses such a header instead of emitting it.
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-17 does not define.
The accepted set is the one Self::decode accepts, so bytes this
writes always parse back through this module rather than being refused
by the peer. Section 10.4.2 lists the excluded values under “The
following Type values are invalid”, and a receiver that follows it
closes the session rather than reading the stream, so writing one loses
the whole session and not merely the stream.
Errors with CodecError::InvalidField before any byte is written, so
a refused header leaves buf untouched rather than half a header the
next write would run into.
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.
A decoded header never reports 3: draft-17 Section 10.4.2 lists every
type value carrying that mode as invalid and Self::decode refuses
them. It remains reachable on a header built by hand, which is what
Self::encode_checked exists to catch.
pub fn is_end_of_group(&self) -> bool
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