pub mod ack;
pub mod connect;
mod macros;
pub mod packet;
pub mod properties;
pub mod publish;
pub mod subscribe;
pub mod varint;
pub use ack::*;
pub use connect::*;
pub use packet::*;
pub use properties::*;
pub use publish::*;
pub use subscribe::*;
use uniffi::Enum;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Enum)]
pub enum MqttVersion {
V311,
V5,
}
impl MqttVersion {
pub fn protocol_level(self) -> u8 {
match self {
MqttVersion::V311 => 4,
MqttVersion::V5 => 5,
}
}
pub fn from_protocol_level(level: u8) -> Option<Self> {
match level {
4 => Some(MqttVersion::V311),
5 => Some(MqttVersion::V5),
_ => None,
}
}
pub fn is_v5(self) -> bool {
matches!(self, MqttVersion::V5)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Enum)]
pub enum QoS {
AtMostOnce,
AtLeastOnce,
ExactlyOnce,
}
impl QoS {
pub fn as_u8(self) -> u8 {
match self {
QoS::AtMostOnce => 0,
QoS::AtLeastOnce => 1,
QoS::ExactlyOnce => 2,
}
}
pub fn from_u8(v: u8) -> Option<Self> {
match v {
0 => Some(QoS::AtMostOnce),
1 => Some(QoS::AtLeastOnce),
2 => Some(QoS::ExactlyOnce),
_ => None,
}
}
}