This is a library designed to be used for creating mqtt clients or mqtt brokers. As many things as were reasonable are encoded in the type system, e.g.
- packets have their own types, except for PUBCOMP/PUBREC/PUBREL/PUBACK, since they are essentially the same
- reason codes are enums and it's not possible to build a packet with an invalid reason code
- properties are defined for every single packet type and therefore only valid property codes can be written into the packet
Messages of these versions should be decodable/encodable with this library.
Encode | Decode | Packet Type |
---|---|---|
✅ | ✅ | Connect |
✅ | ✅ | Connack |
✅ | ✅ | Publish |
✅ | ✅ | Puback |
✅ | ✅ | Pubrec |
✅ | ✅ | Pubrel |
✅ | ✅ | Pubcomp |
✅ | ✅ | Subscribe |
✅ | ✅ | Suback |
✅ | ✅ | Unsubscribe |
✅ | ✅ | Unsuback |
✅ | ✅ | Pingreq |
✅ | ✅ | Pingresp |
✅ | ✅ | Disconnect |
✅ | ✅ | Auth |
- A better command building API?
- Make only necessary code public
- Support for Maximum Packet Size (MQTTv5). Should not send certain properties if they "bloat" the packet
- Ensure all properties have the correct Optionality set in their types
- Add some fuzzing tests to prevent unwanted panic! calls
- Improve documentation