pub trait Packet<'a> {
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);
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