Skip to main content

mqtt_wasi/
lib.rs

1//! Minimal MQTT v5.0 client that compiles to `wasm32-wasip2`.
2//!
3//! Two client modes:
4//! - [`MqttClient`] — synchronous, blocking pub/sub
5//! - [`AsyncMqttClient`] — cooperative non-blocking request/reply for concurrent
6//!   calls via `tokio::join!`
7//!
8//! Optional TLS via the `tls` feature (pure Rust crypto, Wasm-compatible).
9//!
10//! See the [README](https://github.com/mmbarness/mqtt-wasi) for full usage examples.
11
12#![cfg_attr(not(feature = "std"), no_std)]
13
14#[cfg(not(feature = "std"))]
15extern crate alloc;
16
17pub mod codec;
18pub mod error;
19pub mod trace;
20
21#[cfg(feature = "std")]
22pub mod transport;
23#[cfg(feature = "std")]
24pub mod client;
25#[cfg(feature = "std")]
26pub mod options;
27#[cfg(feature = "std")]
28pub mod frame;
29#[cfg(feature = "std")]
30pub mod async_client;
31#[cfg(feature = "std")]
32pub mod request;
33#[cfg(feature = "tls")]
34pub mod tls;
35
36// Re-exports for convenience
37pub use crate::codec::types::{Packet, QoS};
38pub use crate::error::Error;
39pub use crate::trace::TraceContext;
40
41#[cfg(feature = "std")]
42pub use crate::client::{Message, MqttClient, RawMessage, Subscription};
43#[cfg(feature = "std")]
44pub use crate::options::ConnectOptions;
45#[cfg(feature = "std")]
46pub use crate::transport::Transport;
47#[cfg(feature = "std")]
48pub use crate::async_client::AsyncMqttClient;
49#[cfg(feature = "std")]
50pub use crate::request::{RequestEnvelope, ReplyEnvelope};
51#[cfg(feature = "tls")]
52pub use crate::tls::TlsTransport;