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 stream header, refusing a Type value the draft calls invalid.
Refuses any Type value subgroup_type_is_valid rejects before reading
anything after it. The refusal has to come first: every field behind the
Type is present only because the Type says so, so a Type the draft does
not define names no layout, and reading on produces a Track Alias and
Group ID invented out of whatever bytes followed.
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.
pub fn encode(&self, buf: &mut impl BufMut)
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-18 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 11.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.
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