Skip to main content

mqtt_broker/
lib.rs

1//! `mqtt-broker` — an MQTT 3.1.1 / MQTT 5.0 broker written in Rust,
2//! exposed to other languages via [UniFFI](https://mozilla.github.io/uniffi-rs/).
3//!
4//! Reuses the wire-protocol codec from the `mqtt-client` crate
5//! (`mqtt_client::protocol`) rather than duplicating it — this workspace
6//! intentionally has no separate "core" crate; the client crate's codec
7//! doubles as the shared foundation for both binaries.
8
9#![cfg_attr(not(test), deny(clippy::unwrap_used))]
10mod auth_queue;
11mod broker;
12mod config;
13mod connection;
14mod error;
15mod events;
16mod index;
17mod registry;
18mod retain;
19mod session;
20mod tls;
21mod topic;
22mod ws;
23
24/// Internals exposed only for the Criterion benches (`--features bench-internals`).
25#[cfg(feature = "bench-internals")]
26#[doc(hidden)]
27pub mod internals {
28    pub use crate::index::{IndexEntry, SubscriptionIndex};
29    pub use crate::registry::{AttachRequest, SessionRegistry, SubscribeOutcome};
30    pub use crate::session::{OutboundBudget, QueuedMessage, Subscription};
31}
32
33pub use auth_queue::AuthRequest;
34pub use broker::MqttBroker;
35pub use config::{
36    BrokerTlsConfig, DEFAULT_MAX_OUTBOUND_QUEUE, DEFAULT_MAX_PACKET_SIZE, EnhancedAuthOutcome,
37    EnhancedAuthStep, MqttAuthProvider, MqttBrokerConfig, MqttBrokerEventListener,
38    MqttEnhancedAuthProvider, QoS,
39};
40pub use error::{MqttBrokerError, MqttBrokerResult};
41pub use events::BrokerEvent;
42
43uniffi::setup_scaffolding!();