mqtt/
lib.rs

1//! MQTT protocol utilities library
2//!
3//! Strictly implements protocol of [MQTT v3.1.1](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html)
4//!
5//! ## Usage
6//!
7//! ```rust
8//! use std::io::Cursor;
9//!
10//! use mqtt::{Encodable, Decodable};
11//! use mqtt::packet::{VariablePacket, PublishPacket, QoSWithPacketIdentifier};
12//! use mqtt::TopicName;
13//!
14//! // Create a new Publish packet
15//! let packet = PublishPacket::new(TopicName::new("mqtt/learning").unwrap(),
16//!                                 QoSWithPacketIdentifier::Level2(10),
17//!                                 b"Hello MQTT!".to_vec());
18//!
19//! // Encode
20//! let mut buf = Vec::new();
21//! packet.encode(&mut buf).unwrap();
22//! println!("Encoded: {:?}", buf);
23//!
24//! // Decode it with known type
25//! let mut dec_buf = Cursor::new(&buf[..]);
26//! let decoded = PublishPacket::decode(&mut dec_buf).unwrap();
27//! println!("Decoded: {:?}", decoded);
28//! assert_eq!(packet, decoded);
29//!
30//! // Auto decode by the fixed header
31//! let mut dec_buf = Cursor::new(&buf[..]);
32//! let auto_decode = VariablePacket::decode(&mut dec_buf).unwrap();
33//! println!("Variable packet decode: {:?}", auto_decode);
34//! assert_eq!(VariablePacket::PublishPacket(packet), auto_decode);
35//! ```
36
37pub use self::encodable::{Decodable, Encodable};
38pub use self::qos::QualityOfService;
39pub use self::topic_filter::{TopicFilter, TopicFilterRef};
40pub use self::topic_name::{TopicName, TopicNameRef};
41
42pub mod control;
43pub mod encodable;
44pub mod packet;
45pub mod qos;
46pub mod topic_filter;
47pub mod topic_name;