概述
RyanMqtt是一个严格遵循 MQTT 3.1.1 协议标准实现的客户端库,专为资源受限的嵌入式设备设计并优化。
目录结构
/common: RyanMqtt需要的链表和log组件
/coreMqtt: MQTT 协议序列化与反序列化
/docs: md文件的图片和MQTT3.1.1文档
/example: 基于RT-Thread平台的msh测试例程
/mqttclient: RyanMqtt核心源码实现
/platform: RyanMqtt的跨平台兼容层
/test: RyanMqtt的测试文件
代码审查指南
语言要求
在审查代码时,请同时使用英文和中文提供反馈,以确保所有贡献者都能理解。
审查重点领域
- 严格遵循 MQTT3.1.1 协议标准
- 检查内存泄漏、缓冲区管理、内存分配与释放
- 检查 RTOS 环境下的线程安全问题
- 检查语法错误和异常处理
- 代码执行效率与性能
- 代码风格一致性
- 重点审查 common、coreMqtt、mqttclient、platform文件夹使用严格模式,test文件夹只需保证程序正常运行不要使用严格模式
常见问题检查
- 缺少的错误处理 / 不当的错误传播 / 静默失败
- 对外开放的公共API是否具备完善的校验
- 模块解耦和抽象是否合理
- 代码的性能问题
RyanMqtt内部实现参考
- RyanMqtt内部使用
msg链表管理订阅主题列表,使用ack链表存储QOS等级的ack消息。
- Qos2实现使用MQTT3.1.1手册推荐的方法B
- RyanMqtt心跳使用1.5倍时间,当心跳周期到达设置的0.9倍后会发送心跳包,如果超过1.5倍就通知用户断开连接
代码格式
- 可以使用中文进行注释
- 所有代码须符合项目
.clang-format 配置
最佳实践
- 始终考虑嵌入式约束,有限的RAM和ROM,资源利用效率
- 优化内存管理,保证高效和实时性
- 关注模块解耦和可维护性