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).
Implementiert die volle MQTT-5.0-Spec inkl. aller Control-Packet-
Bodies (CONNECT / CONNACK / PUBLISH / PUBACK / PUBREC / PUBREL /
PUBCOMP / SUBSCRIBE / SUBACK / UNSUBSCRIBE / UNSUBACK / PINGREQ /
PINGRESP / DISCONNECT / AUTH), aller Properties (§2.2.2),
Keep-Alive-Tracker (§3.1.2.10), Topic-Filter-Matching mit
Wildcards (§4.7), In-Memory-Broker mit Session-State + Retained-
Messages + Will-Messages, und einen 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).
§Schichten-Position
Layer 5 — Bridges. Substrat fuer 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).- Encoder/Decoder fuer alle 14 Control-Packet-Bodies — siehe
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.
§Beispiel
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::encode_publish;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_connect_body;pub use control_packets::decode_disconnect_body;pub use control_packets::decode_suback_body;pub use control_packets::decode_subscribe_body;pub use control_packets::decode_unsuback_body;pub use control_packets::decode_unsubscribe_body;pub use control_packets::encode_ack_body;pub use control_packets::encode_auth_body;pub use control_packets::encode_connack_body;pub use control_packets::encode_connect_body;pub use control_packets::encode_disconnect_body;pub use control_packets::encode_suback_body;pub use control_packets::encode_subscribe_body;pub use control_packets::encode_unsuback_body;pub use control_packets::encode_unsubscribe_body;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 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.
- 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.
- topic_
filter - MQTT Topic Filter Matching — Spec §4.7.
- vbi
- Variable Byte Integer — MQTT v5.0 §1.5.5.