Add runnable codec example and complete CI
MoonBit MQTT 是一个面向 MQTT 3.1.1 常用控制包的字节级编解码基础库。它提供固定头、Remaining Length、MQTT UTF-8 String、Binary Data,以及常用控制包的编码、解码和基础合法性校验。
当前版本聚焦 MQTT packet codec;网络传输、客户端运行时、Broker 会话、QoS 运行时状态、TLS/SSL 和 MQTT 5.0 可作为后续独立扩展方向。
Packet
以下能力不属于当前 packet codec 的实现范围,可作为后续独立扩展方向:
发布到 Mooncakes 后,可在 MoonBit 项目中添加依赖:
moon add zbhzs1/moonbit-mqtt
从源码验证当前版本:
git clone https://github.com/zbhzs1/moonbit-mqtt.git cd moonbit-mqtt moon check moon build moon test
仓库提供可运行的最小示例:
moon run examples/basic
let packet = encode_connect({ client_id: "moon", username: None, password: None, will_topic: None, will_message: None, keep_alive: 60, flags: { username: false, password: false, will_retain: false, will_qos: QoS0, will_flag: false, clean_session: true, }, })
let encoded = encode_publish({ topic: "sensor/temp", payload: b"24.5", qos: QoS1, message_id: Some(7), retain: false, dup: false, }) let decoded = match encoded { Ok(packet) => decode_publish(packet) Err(e) => Err(e) }
let suback = decode_suback([0x90, 0x04, 0x00, 0x09, 0x00, 0x80])
moon check moon build moon test moon run examples/basic
当前测试包含 20 个字节级测试,覆盖 Remaining Length、字符串和二进制字段、packet framing、generic packet encoder/decoder、CONNECT、CONNACK、PUBLISH QoS 0/1/2、QoS 确认包、SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK、PINGREQ、PINGRESP、DISCONNECT,以及部分非法固定头和包长错误。
本项目适合作为 MoonBit MQTT 客户端、Broker、协议测试工具或教学示例的底层包编解码组件。上层网络传输、会话和重传逻辑需要在本库之外实现。
Apache-2.0
MoonBit MQTT 3.1.1 常用控制包字节级 packet codec,提供编码/解码和基础校验;不包含网络传输或客户端运行时。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MoonBit MQTT 3.1.1 Packet Codec
MoonBit MQTT 是一个面向 MQTT 3.1.1 常用控制包的字节级编解码基础库。它提供固定头、Remaining Length、MQTT UTF-8 String、Binary Data,以及常用控制包的编码、解码和基础合法性校验。
当前版本聚焦 MQTT packet codec;网络传输、客户端运行时、Broker 会话、QoS 运行时状态、TLS/SSL 和 MQTT 5.0 可作为后续独立扩展方向。
当前范围
Packet枚举和各控制包编解码函数之间进行分发当前版本边界
以下能力不属于当前 packet codec 的实现范围,可作为后续独立扩展方向:
安装
发布到 Mooncakes 后,可在 MoonBit 项目中添加依赖:
从源码验证当前版本:
使用示例
仓库提供可运行的最小示例:
编码 CONNECT
编码和解码 PUBLISH
解码 SUBACK
本地验证
当前测试包含 20 个字节级测试,覆盖 Remaining Length、字符串和二进制字段、packet framing、generic packet encoder/decoder、CONNECT、CONNACK、PUBLISH QoS 0/1/2、QoS 确认包、SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK、PINGREQ、PINGRESP、DISCONNECT,以及部分非法固定头和包长错误。
项目定位
本项目适合作为 MoonBit MQTT 客户端、Broker、协议测试工具或教学示例的底层包编解码组件。上层网络传输、会话和重传逻辑需要在本库之外实现。
License
Apache-2.0