pub struct ObjectHeader {
pub object_id: VarInt,
pub payload_length: VarInt,
pub object_status: ObjectStatus,
}Expand description
Object within a subgroup stream.
Encoding: object_id(vi), payload_length(vi), if payload_length == 0: object_status(vi) else: payload bytes (status is implicitly Normal)
Fields§
§object_id: VarIntObject identifier within the subgroup.
payload_length: VarIntLength of the object payload in bytes.
object_status: ObjectStatusStatus of this object.
Implementations§
Source§impl ObjectHeader
impl ObjectHeader
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.1 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 an object header from the buffer.
Trait Implementations§
Source§impl Clone for ObjectHeader
impl Clone for ObjectHeader
Source§fn clone(&self) -> ObjectHeader
fn clone(&self) -> ObjectHeader
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more