Publish

Struct Publish 

pub struct Publish<'a> {
    pub dup: bool,
    pub qos: QoS,
    pub retain: bool,
    pub topic: Option<&'a Topic>,
    pub packet_id: Option<PacketId>,
    pub properties: &'a PublishProperties,
    pub topic_alias: Option<NonZeroU16>,
    pub payload: &'a [u8],
}
Expand description

PUBLISH packet carrying an application message.

Fields§

§dup: bool

Duplicate delivery flag.

§qos: QoS

Quality of Service level.

§retain: bool

Retain flag.

§topic: Option<&'a Topic>

Topic name. None when resolved via topic alias.

§packet_id: Option<PacketId>

Packet identifier (present for QoS 1 and 2).

§properties: &'a PublishProperties

PUBLISH properties.

§topic_alias: Option<NonZeroU16>

Topic Alias (§3.3.2.3.4) to encode alongside properties.

This is an encode-side convenience for assigning an alias without allocating a merged property buffer: the encoder appends it as a TopicAlias property. It is therefore always None after decode. An inbound alias is reported as part of properties, so an alias must be set in exactly one of the two, never both.

§payload: &'a [u8]

Application message payload.

Implementations§

§

impl<'a> Publish<'a>

pub const fn flags_byte(&self) -> u8

Returns the fixed-header flags byte for this PUBLISH.

const fn topic_alias_len(&self) -> usize

Encoded length of the injected topic-alias property, or 0 if none.

const fn properties_section_len(&self) -> usize

Byte length of the properties section (length prefix + content), including the injected topic-alias property.

pub const fn encoded_len(&self) -> usize

Returns the encoded size of the variable header + payload in bytes.

pub const fn encode(&self, w: &mut Writer<'_>) -> Result<(), EncodeError>

Encodes the PUBLISH variable header + payload into the writer.

§Errors

Returns EncodeError::InsufficientSpace if the writer does not have enough capacity.

pub const fn decode(flags: u8, r: &mut Reader<'a>) -> Result<Self, DecodeError>

Decodes a PUBLISH packet from the flags byte and reader.

§Errors

Returns DecodeError if the data is malformed, the QoS is invalid, or properties contain disallowed IDs.

Trait Implementations§

§

impl<'a> Clone for Publish<'a>

§

fn clone(&self) -> Publish<'a>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl<'a> Debug for Publish<'a>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
§

impl<'a> PartialEq for Publish<'a>

§

fn eq(&self, other: &Publish<'a>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl<'a> Eq for Publish<'a>

§

impl<'a> StructuralPartialEq for Publish<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Publish<'a>

§

impl<'a> RefUnwindSafe for Publish<'a>

§

impl<'a> Send for Publish<'a>

§

impl<'a> Sync for Publish<'a>

§

impl<'a> Unpin for Publish<'a>

§

impl<'a> UnwindSafe for Publish<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.