# 概述 RyanMqtt是一个严格遵循 [MQTT 3.1.1](https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html) 协议标准实现的客户端库,专为资源受限的嵌入式设备设计并优化。 ## 目录结构 - `/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,资源利用效率 - 优化内存管理,保证高效和实时性 - 关注模块解耦和可维护性