pub struct FetchObjectHeader {
pub group_id: VarInt,
pub subgroup_id: VarInt,
pub object_id: VarInt,
pub publisher_priority: u8,
pub object_status: ObjectStatus,
pub payload_length: VarInt,
}Expand description
Object within a fetch stream.
Encoding: group_id(vi), subgroup_id(vi), object_id(vi), publisher_priority(u8), payload_length(vi), [object_status(vi) if payload_length==0], payload bytes
Fields§
§group_id: VarIntGroup identifier.
subgroup_id: VarIntSubgroup identifier within the group.
object_id: VarIntObject identifier within the subgroup.
publisher_priority: u8Publisher priority for delivery ordering.
object_status: ObjectStatusStatus of this object.
payload_length: VarIntLength of the object payload in bytes.
Implementations§
Source§impl FetchObjectHeader
impl FetchObjectHeader
Sourcepub fn encode_checked(&self, buf: &mut impl BufMut) -> Result<(), CodecError>
pub fn encode_checked(&self, buf: &mut impl BufMut) -> Result<(), CodecError>
Encode the header, refusing a status the framing cannot carry.
Section 7.3.2 puts the Object Status field on the wire only when the
Object Payload Length is zero, and Section 7.1.1.1 says “Any object
with a status code other than zero MUST have an empty payload”. A
non-zero status paired with a non-zero payload length therefore has no
encoding at all: Self::encode drops the status and the peer reads an
ordinary object, which is a different object from the one the caller
described. This refuses instead.
The datagram types on this draft already refuse the same pairing. These two did not, and they are the ones a publisher writes on every stream.
§Errors
CodecError::InvalidField if a non-zero Object Status is paired with
a non-zero Object Payload Length.
Sourcepub fn decode(buf: &mut impl Buf) -> Result<Self, CodecError>
pub fn decode(buf: &mut impl Buf) -> Result<Self, CodecError>
Decode a fetch object header from the buffer.
Trait Implementations§
Source§impl Clone for FetchObjectHeader
impl Clone for FetchObjectHeader
Source§fn clone(&self) -> FetchObjectHeader
fn clone(&self) -> FetchObjectHeader
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more