#![cfg_attr(not(feature = "std"), no_std)]
extern crate alloc;
#[cfg(not(any(feature = "tokio", feature = "embassy")))]
compile_error!("A runtime feature must be enabled. Available: 'tokio', 'embassy'. 'embassy' is enabled by default.");
pub mod client;
pub mod config;
pub mod error;
pub mod protocol;
pub mod session;
pub mod state;
pub mod time;
pub mod transport;
pub use mqtt_proto::{Pid, Protocol, QoS, TopicFilter, TopicName};
pub use client::{ClientEvent, MqttClient};
pub use config::{
ClientConfig, ProtocolConfig, PublishConfig, ReconnectConfig, TransportConfig, V5ConnectConfig,
V5PublishConfig, V5SubscribeConfig, WillMessage,
};
pub use error::{ConfigError, MqttError, ProtocolError, SessionError, TransportError};
pub use protocol::{MqttProtocolHandler, PacketAction, V3Handler, V5Handler};
pub use time::TimeProvider;
pub use transport::MqttTransport;
#[macro_export]
macro_rules! topic {
($topic:expr) => {
$crate::TopicName::try_from($topic).expect("Invalid topic name")
};
}
#[macro_export]
macro_rules! topic_filter {
($filter:expr) => {
$crate::TopicFilter::try_from($filter).expect("Invalid topic filter")
};
}