pub trait Packet<'a> {
// Required methods
fn new() -> Self;
fn encode(
&mut self,
buffer: &mut [u8],
buff_len: usize,
) -> Result<usize, BufferError>;
fn decode(
&mut self,
buff_reader: &mut BuffReader<'a>,
) -> Result<(), BufferError>;
fn set_property_len(&mut self, value: u32);
fn get_property_len(&mut self) -> u32;
fn push_to_properties(&mut self, property: Property<'a>);
fn property_allowed(&mut self, property: &Property<'a>) -> bool;
fn set_fixed_header(&mut self, header: u8);
fn set_remaining_len(&mut self, remaining_len: u32);
// Provided methods
fn add_properties<const MAX_PROPERTIES: usize>(
&mut self,
properties: &Vec<Property<'a>, MAX_PROPERTIES>,
) -> u32 { ... }
fn decode_properties(
&mut self,
buff_reader: &mut BuffReader<'a>,
) -> Result<(), BufferError> { ... }
fn decode_fixed_header(
&mut self,
buff_reader: &mut BuffReader<'_>,
) -> Result<PacketType, BufferError> { ... }
}
Expand description
This trait provide interface for mapping MQTTv5 packets to human readable structures which can be later modified and used for communication purposes.
Required Methods§
fn new() -> Self
Sourcefn encode(
&mut self,
buffer: &mut [u8],
buff_len: usize,
) -> Result<usize, BufferError>
fn encode( &mut self, buffer: &mut [u8], buff_len: usize, ) -> Result<usize, BufferError>
Method encode provide way how to transfer Packet struct into Byte array (buffer)
Sourcefn decode(
&mut self,
buff_reader: &mut BuffReader<'a>,
) -> Result<(), BufferError>
fn decode( &mut self, buff_reader: &mut BuffReader<'a>, ) -> Result<(), BufferError>
Decode method is opposite of encode - decoding Byte array and mapping it into corresponding Packet struct
Sourcefn set_property_len(&mut self, value: u32)
fn set_property_len(&mut self, value: u32)
Setter method for packet properties len - not all Packet types support this
Sourcefn get_property_len(&mut self) -> u32
fn get_property_len(&mut self) -> u32
Setter method for packet properties len - not all Packet types support this
Sourcefn push_to_properties(&mut self, property: Property<'a>)
fn push_to_properties(&mut self, property: Property<'a>)
Method enables pushing new property into packet properties
Sourcefn property_allowed(&mut self, property: &Property<'a>) -> bool
fn property_allowed(&mut self, property: &Property<'a>) -> bool
Returns if property is allowed for packet
Sourcefn set_fixed_header(&mut self, header: u8)
fn set_fixed_header(&mut self, header: u8)
Setter for packet fixed header
Sourcefn set_remaining_len(&mut self, remaining_len: u32)
fn set_remaining_len(&mut self, remaining_len: u32)
Setter for remaining len
Provided Methods§
Sourcefn add_properties<const MAX_PROPERTIES: usize>(
&mut self,
properties: &Vec<Property<'a>, MAX_PROPERTIES>,
) -> u32
fn add_properties<const MAX_PROPERTIES: usize>( &mut self, properties: &Vec<Property<'a>, MAX_PROPERTIES>, ) -> u32
Method enables adding properties from client config - each packet decides if property can be used with that or not
Sourcefn decode_properties(
&mut self,
buff_reader: &mut BuffReader<'a>,
) -> Result<(), BufferError>
fn decode_properties( &mut self, buff_reader: &mut BuffReader<'a>, ) -> Result<(), BufferError>
Method is decoding Byte array pointing to properties into heapless Vec in packet. If decoding goes wrong method is returning Error
Sourcefn decode_fixed_header(
&mut self,
buff_reader: &mut BuffReader<'_>,
) -> Result<PacketType, BufferError>
fn decode_fixed_header( &mut self, buff_reader: &mut BuffReader<'_>, ) -> Result<PacketType, BufferError>
Method is decoding packet header into fixed header part and remaining length
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.