Expand description
Crate zerodds-mqtt-bridge. Safety classification: STANDARD.
MQTT v5.0 (OASIS Standard 07 March 2019) wire codec + broker +
DDS bridge — pure-Rust no_std + alloc, forbid(unsafe_code).
Implements the full MQTT 5.0 spec incl. all control-packet
bodies (CONNECT / CONNACK / PUBLISH / PUBACK / PUBREC / PUBREL /
PUBCOMP / SUBSCRIBE / SUBACK / UNSUBSCRIBE / UNSUBACK / PINGREQ /
PINGRESP / DISCONNECT / AUTH), all properties (§2.2.2),
a keep-alive tracker (§3.1.2.10), topic-filter matching with
wildcards (§4.7), an in-memory broker with session state + retained
messages + will messages, and an MQTT↔DDS topic bridge.
Spec: OASIS MQTT 5.0 §1 (Introduction), §1.5 (Data Types), §2 (MQTT Control Packet Format), §3 (MQTT Control Packets), §4 (Operational Behavior).
§Layer position
Layer 5 — bridges. Substrate for DDS↔MQTT endpoint mapping (IoT broker integration, cloud MQTT endpoints).
§Public API (Stand 1.0.0-rc.1)
FixedHeader/ControlPacketType— §2.1.encode_publish/decode_publish/CodecError— PUBLISH codec (§3.3).- Encoders/decoders for all 14 control-packet bodies — see
control_packets. Property/PropertyId/PropertyValueKind/PropertyDataType— §2.2.2.encode_vbi/decode_vbi/vbi_size— Variable Byte Integer (§1.5.5).encode_utf8_string/decode_utf8_string/encode_binary_data/decode_binary_data/encode_two_byte_int/decode_two_byte_int— Data Types §1.5.Broker/Session/BrokerSubscription/RetainedMessage/DeliveryEnvelope/Will/QoS— broker logic (§3 + §4).KeepAliveTracker— §3.1.2.10.ReasonCode— §2.4.topic_matches/validate_filter/validate_topic_name/TopicFilterError— topic-filter matching (§4.7).MqttDdsBridge/TopicMapper/BridgeStats/DdsDurability/DdsReliability/mqtt_qos_to_dds/dds_qos_to_mqtt/forward_user_properties— MQTT↔DDS topic mapping.
§Example
use zerodds_mqtt_bridge::{encode_vbi, decode_vbi};
let buf = encode_vbi(268_435_455).expect("encode max VBI");
let (v, consumed) = decode_vbi(&buf).expect("decode");
assert_eq!(v, 268_435_455);
assert_eq!(consumed, 4);Re-exports§
pub use codec::CodecError;pub use codec::decode_publish;pub use codec::decode_publish_v;pub use codec::encode_publish;pub use codec::encode_publish_v;pub use control_packets::AckBody;pub use control_packets::AuthBody;pub use control_packets::ConnackBody;pub use control_packets::ConnectBody;pub use control_packets::DisconnectBody;pub use control_packets::PropertyDataType;pub use control_packets::SubackBody;pub use control_packets::SubscribeBody;pub use control_packets::Subscription;pub use control_packets::UnsubackBody;pub use control_packets::UnsubscribeBody;pub use control_packets::decode_ack_body;pub use control_packets::decode_auth_body;pub use control_packets::decode_connack_body;pub use control_packets::decode_connack_body_v;pub use control_packets::decode_connect_body;pub use control_packets::decode_connect_body_v;pub use control_packets::decode_disconnect_body;pub use control_packets::decode_suback_body;pub use control_packets::decode_suback_body_v;pub use control_packets::decode_subscribe_body;pub use control_packets::decode_subscribe_body_v;pub use control_packets::decode_unsuback_body;pub use control_packets::decode_unsuback_body_v;pub use control_packets::decode_unsubscribe_body;pub use control_packets::decode_unsubscribe_body_v;pub use control_packets::encode_ack_body;pub use control_packets::encode_ack_body_v;pub use control_packets::encode_auth_body;pub use control_packets::encode_connack_body;pub use control_packets::encode_connack_body_v;pub use control_packets::encode_connect_body;pub use control_packets::encode_connect_body_v;pub use control_packets::encode_disconnect_body;pub use control_packets::encode_disconnect_body_v;pub use control_packets::encode_suback_body;pub use control_packets::encode_suback_body_v;pub use control_packets::encode_subscribe_body;pub use control_packets::encode_subscribe_body_v;pub use control_packets::encode_unsuback_body;pub use control_packets::encode_unsuback_body_v;pub use control_packets::encode_unsubscribe_body;pub use control_packets::encode_unsubscribe_body_v;pub use control_packets::property_data_type;pub use data_types::decode_binary_data;pub use data_types::decode_two_byte_int;pub use data_types::decode_utf8_string;pub use data_types::encode_binary_data;pub use data_types::encode_two_byte_int;pub use data_types::encode_utf8_string;pub use packet::ControlPacketType;pub use packet::FixedHeader;pub use properties::Property;pub use properties::PropertyId;pub use properties::PropertyValueKind;pub use vbi::decode_vbi;pub use vbi::encode_vbi;pub use vbi::vbi_size;pub use version::ProtocolVersion;pub use net::MqttClient;pub use server::MqttBrokerServer;pub use server::ServerHandle;pub use broker::Broker;pub use broker::DeliveryEnvelope;pub use broker::QoS;pub use broker::RetainedMessage;pub use broker::Session;pub use broker::Subscription as BrokerSubscription;pub use broker::Will;pub use dds_bridge::BridgeStats;pub use dds_bridge::DdsDurability;pub use dds_bridge::DdsReliability;pub use dds_bridge::MqttDdsBridge;pub use dds_bridge::TopicMapper;pub use dds_bridge::dds_qos_to_mqtt;pub use dds_bridge::forward_user_properties;pub use dds_bridge::mqtt_qos_to_dds;pub use keep_alive::KeepAliveTracker;pub use reason_codes::ReasonCode;pub use topic_filter::TopicFilterError;pub use topic_filter::matches as topic_matches;pub use topic_filter::validate_filter;pub use topic_filter::validate_topic_name;
Modules§
- broker
- MQTT 5.0 broker logic — Spec §3 + §4.
- codec
- MQTT v5.0 PUBLISH-Packet Codec — Spec §3.3.
- control_
packets - MQTT v5.0 Control Packet Body Codecs — Spec §3.1-§3.15.
- daemon
zerodds-mqtt-bridgeddaemon implementation.- data_
types - MQTT v5.0 Data Types — §1.5.
- dds_
bridge - MQTT↔DDS topic bridge.
- keep_
alive - MQTT v5.0 Keep-Alive-Tracker — Spec §3.1.2.10.
- net
stdTCP framing + a lightweight version-aware MQTT client.- packet
- MQTT Control Packet Types + Fixed Header — Spec §2.1.
- properties
- MQTT v5.0 Properties — Spec §2.2.2.
- reason_
codes - MQTT 5.0 Reason Codes — Spec §2.4.
- server
- Standalone MQTT broker server — Spec §4 (Operational Behavior).
- topic_
filter - MQTT Topic Filter Matching — Spec §4.7.
- vbi
- Variable Byte Integer — MQTT v5.0 §1.5.5.
- version
- MQTT protocol version (§3.1.2.2 Protocol Level).