Parcourir la source

doc: 更新文档

RyanCW il y a 4 mois
Parent
commit
c7940bbbf8
2 fichiers modifiés avec 60 ajouts et 71 suppressions
  1. 16 14
      README.md
  2. 44 57
      RyanMqtt2.0发布说明及迁移指南.md

+ 16 - 14
README.md

@@ -17,36 +17,38 @@
 
 
 #### 主要特性
 #### 主要特性
 
 
-- ✅ **严格遵循  [MQTT 3.1.1](https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html)  协议标准**
+- ✅ **严格遵循  [MQTT 3.1.1](https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html)  协议标准**,确保与各类服务器的高度兼容性
 
 
-- ✅ **高质量代码保障** , 引入 **[clang-tidy](https://clang.llvm.org/extra/clang-tidy/#clang-tidy)** 与 **[Cppcheck](https://cppcheck.sourceforge.io/)** 进行静态分析,实现接近语法级"**零缺陷**",提升可维护
+- ✅ **运行时安全分析验证**,使用 **[Sanitizer](https://clang.llvm.org/docs/index.html#sanitizers)** 系列工具(如 AddressSanitizer、ThreadSanitizer、UndefinedBehaviorSanitizer、LeakSanitizer 等),在调试阶段捕获内存越界、Use-after-free、数据竞争、未定义行为、内存泄漏等问题,大幅提升代码健壮性与安全
 
 
-- ✅ **AI 辅助开发与审查**,使用  **[coderabbitai](https://www.coderabbit.ai)** 和 **[Copilot](https://github.com/features/copilot)** 辅助编码与代码审查,持续优化代码质量,构建安全防线
+- ✅ **高质量代码保障** , 引入 **[clang-tidy](https://clang.llvm.org/extra/clang-tidy/#clang-tidy)** 与 **[Cppcheck](https://cppcheck.sourceforge.io/)** 进行静态分析,实现接近语法级的"**零缺陷**",显著提升可维护性与可读性
+
+- ✅ **AI 辅助开发与审查**,结合  **[coderabbitai](https://www.coderabbit.ai)** 与 **[Copilot](https://github.com/features/copilot)** ,在编码与代码审查阶段持续优化代码质量,构建多层安全防线
 
 
 - ✅ **7 大类专项测试用例**,覆盖广泛场景,全链路内存泄漏检测,强化稳定性与可靠性
 - ✅ **7 大类专项测试用例**,覆盖广泛场景,全链路内存泄漏检测,强化稳定性与可靠性
 
 
-- ✅ **支持多客户端实例**,适用于复杂应用场景
+- ✅ **支持多客户端实例**,满足复杂业务场景下的多连接需求
 
 
-- ✅ **全等级 QoS 支持(QoS0/1/2)**,并提供**用户可控的消息丢弃机制**,避免因 QoS1/QoS2 消息重传导致内存无限堆积
+- ✅ **全等级 QoS 支持(QoS0/1/2)**,并提供**用户可控的消息丢弃策略**,防止 QoS1/QoS2 重传导致内存无限堆积
 
 
-- ✅ **完整的主题匹配与通配符支持**主题层级分隔符 `/`、通配符 `#`/`+`,并正确处理以 `$` 开头的系统主题
+- ✅ **完整的主题匹配与通配符支持**主题层级分隔符 `/`、通配符 `#`/`+`,并正确处理以 `$` 开头的系统主题
 
 
-- ✅ 支持批量订阅 / 取消订阅
+- ✅ **批量订阅 / 取消订阅**,减少网络交互次数,提高效率
 
 
-- ✅ 可配置 KeepAlive、自动重连、LWT(遗嘱消息)、Clean Session 等功能
+- ✅ **可配置连接参数**,支持 KeepAlive、自动重连、LWT(遗嘱消息)、Clean Session 等功能
 
 
-- ✅ 丰富的参数配置与事件回调接口,满足绝大多数实际项目需求(欢迎提出新需求)
+- ✅ **丰富的参数与事件回调接口**,丰富的参数配置与事件回调接口,满足绝大多数实际项目需求(**欢迎提出新需求**
 
 
-- ✅**高性能与高并发能力**,在 Linux 环境下可稳定发送/接收连续 20,000 条 QoS2 消息,无一丢包。
+- ✅**高性能与高并发能力**,在 Linux 环境下稳定支撑 20 个并发发送线程,每线程连续发送 1000 条 QoS1/QoS2 消息,零丢包、零异常
   > ⚠️ 实际性能受单片机内存大小及网络硬件能力影响
   > ⚠️ 实际性能受单片机内存大小及网络硬件能力影响
 
 
-- ✅ **复杂线程环境下稳定运行**,已在多个商业项目中长期使用验证
+- ✅ **复杂线程环境下稳定运行**,已在多个商业项目中长期验证
 
 
-- ✅ **跨平台设计**,仅需实现少量平台接口即可移植
+- ✅ **跨平台设计**,仅需实现少量平台接口即可快速移植
 
 
-- ✅ **低资源占用,依赖极少**
+- ✅ **低资源占用,依赖极少**,适合资源受限环境
 
 
-- ❌ **无内置 TLS 支持**:TLS 需由用户在平台层自行实现(避免模块冲突,适配多业务共用 TLS 的场景)
+- ❌ **无内置 TLS 支持**:需由用户在平台层自行实现(避免模块冲突,适配多业务共用 TLS 的场景)
 
 
 - ❌ **不支持裸机平台**:建议裸机系统使用 coreMQTT 等更适合无操作系统环境的实现
 - ❌ **不支持裸机平台**:建议裸机系统使用 coreMQTT 等更适合无操作系统环境的实现
 
 

+ 44 - 57
RyanMqtt2.0发布说明及迁移指南.md

@@ -2,36 +2,17 @@
 
 
 > **更轻、更快、更安全、更可靠**
 > **更轻、更快、更安全、更可靠**
 
 
-## 📦 升级路线图概览
-
-| 维度         | 变更类型                                                     | 核心价值                                                     |
-| ------------ | :----------------------------------------------------------- | :----------------------------------------------------------- |
-| **协议栈**   | **[Paho MQTT Embedded](https://github.com/eclipse-paho/paho.mqtt.embedded-c)** → **[coreMQTT](https://github.com/FreeRTOS/coreMQTT)** | 社区维护活跃、测试覆盖完善,为 [**MQTT 5.0**](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html) 提供可扩展性基础 |
-| **代码规范** | 引入 **[clang-tidy](https://clang.llvm.org/extra/clang-tidy/#clang-tidy)** 和 **[Cppcheck](https://cppcheck.sourceforge.io/)** 进行静态分析 | **高质量代码保障**,接近语法级"**零缺陷**",显著提升可维护性 |
-| **代码审查** | 使用 **[coderabbitai](https://www.coderabbit.ai)** 和 **[Copilot](https://github.com/features/copilot)** 辅助编码与代码审查 | **AI辅助开发与审查**,持续提升代码质量,构筑安全防线         |
-| **内存管理** | 固定缓冲区 → **动态按需分配**                                | 按需申请,降低内存占用                                       |
-| **线程模型** | 更完善的线程安全                                             | 支撑复杂线程应用场景,杜绝竞态风险                           |
-| **测试体系** | 新增 7 大专项测试                                            | 覆盖广泛场景,全链路内存泄漏检测,强化稳定性与可靠性         |
-
-## 🏗 架构与底层能力变更
-
-### 1. MQTT 协议栈升级
-
-- 从 **[Paho MQTT Embedded](https://github.com/eclipse-paho/paho.mqtt.embedded-c)** 到 **[coreMQTT](https://github.com/FreeRTOS/coreMQTT)**
-- **[coreMQTT](https://github.com/FreeRTOS/coreMQTT)** 社区活跃度高、维护频繁、测试覆盖更全面
-- 更灵活的缓冲区管理策略
-- 为 [**MQTT 5.0**](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html) 扩展奠定实现基础
-
-### 2. 内存管理更改为动态缓冲区
-
-- 移除固定 `recvBuffer` / `sendBuffer` 配置
-- 采用**按需动态分配**,降低运行内存占用
-
-### 3. 线程安全强化
-
-- 全面审查公共 API 与共享资源访问路径
-- 精细化控制锁粒度,消除竞态并优化性能
-- 在高并发、多客户端、多线程场景下通过专项压力测试
+## 🌟 核心亮点
+
+| 维度                   | 变更类型                                                     | 核心价值                                                     |
+| ---------------------- | :----------------------------------------------------------- | :----------------------------------------------------------- |
+| **协议栈**             | **[Paho MQTT Embedded](https://github.com/eclipse-paho/paho.mqtt.embedded-c)** → **[coreMQTT](https://github.com/FreeRTOS/coreMQTT)** | 社区维护活跃、测试覆盖完善,为未来 [**MQTT 5.0**](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html) 支持奠定基础 |
+| **运行时安全分析验证** | 使用 **[Sanitizer](https://clang.llvm.org/docs/index.html#sanitizers)** 进行运行时安全分析 | 调试阶段捕获内存越界、Use-after-free、数据竞争、未定义行为、内存泄漏等问题,大幅提升**代码健壮性与安全性** |
+| **高质量代码保障**     | 引入 **[clang-tidy](https://clang.llvm.org/extra/clang-tidy/#clang-tidy)** 和 **[Cppcheck](https://cppcheck.sourceforge.io/)** 进行静态分析 | **高质量代码保障**,接近语法级"**零缺陷**",显著提升可维护性 |
+| **AI 辅助开发与审查**  | 使用 **[coderabbitai](https://www.coderabbit.ai)** 和 **[Copilot](https://github.com/features/copilot)** 辅助编码与代码审查 | **AI辅助开发与审查**,持续提升代码质量,构筑安全防线         |
+| **内存管理优化**       | 固定缓冲区 → **动态按需分配**                                | 采用**按需动态分配**,降低运行内存占用                       |
+| **线程安全强化**       | 更完善的线程安全                                             | 支撑复杂线程应用场景,杜绝竞态风险                           |
+| **测试体系升级**       | 新增 7 大专项测试                                            | 覆盖广泛场景,全链路内存泄漏检测,强化稳定性与可靠性         |
 
 
 ## 📈 公共 API 变化
 ## 📈 公共 API 变化
 
 
@@ -56,6 +37,11 @@ extern RyanMqttError_e RyanMqttSafeFreeSubscribeResources(RyanMqttMsgHandler_t *
 
 
 // 订阅数量查询
 // 订阅数量查询
 extern RyanMqttError_e RyanMqttGetSubscribeTotalCount(RyanMqttClient_t *client, int32_t *subscribeTotalCount);
 extern RyanMqttError_e RyanMqttGetSubscribeTotalCount(RyanMqttClient_t *client, int32_t *subscribeTotalCount);
+
+// 获取MqttConfig信息
+extern RyanMqttError_e RyanMqttGetConfig(RyanMqttClient_t *client, RyanMqttClientConfig_t **pclientConfig);
+// 安全的释放获取的MqttConfig信息
+extern RyanMqttError_e RyanMqttFreeConfigFromGet(RyanMqttClientConfig_t *clientConfig);
 ```
 ```
 
 
 ### 新增功能价值
 ### 新增功能价值
@@ -64,7 +50,7 @@ extern RyanMqttError_e RyanMqttGetSubscribeTotalCount(RyanMqttClient_t *client,
 | ------------------------ | --------------------- | -------------------------------------- |
 | ------------------------ | --------------------- | -------------------------------------- |
 | `SubscribeMany`          | 批量订阅/取消多个主题 | 减少网络往返,提升吞吐效率             |
 | `SubscribeMany`          | 批量订阅/取消多个主题 | 减少网络往返,提升吞吐效率             |
 | `PublishAndUserData`     | 发布消息附带上下文    | 回调中可直接读取用户数据,简化状态管理 |
 | `PublishAndUserData`     | 发布消息附带上下文    | 回调中可直接读取用户数据,简化状态管理 |
-| `GetSubscribeSafe`       | 安全查询订阅状态      | 多线程场景下无需调用方加锁(内部已同步)                  |
+| `GetSubscribeSafe`       | 安全查询订阅状态      | 内部同步,多线程安全        |
 | `GetSubscribeTotalCount` | 获取订阅总数量        | 便于监控与资源调度                     |
 | `GetSubscribeTotalCount` | 获取订阅总数量        | 便于监控与资源调度                     |
 
 
 ## 🔧 平台抽象层优化
 ## 🔧 平台抽象层优化
@@ -75,28 +61,28 @@ extern RyanMqttError_e RyanMqttGetSubscribeTotalCount(RyanMqttClient_t *client,
 uint32_t platformUptimeMs(void);
 uint32_t platformUptimeMs(void);
 ```
 ```
 
 
-- 跨平台返回系统启动以来的毫秒时间
-- 内部处理 32 位整数回绕问题确保长时间运行稳定
+- 跨平台毫秒级运行时间
+- 内部处理 32 位回绕,长时间运行稳定
 
 
 ### 2. 网络收发模型简化
 ### 2. 网络收发模型简化
 
 
 - 收发接口改为**单次调用语义**,减少冗余循环与分支
 - 收发接口改为**单次调用语义**,减少冗余循环与分支
-- 返回值由`错误码`调整为`实际传输字节数`,更贴近底层行为
-- 异常恢复路径更明确可控
+- 返回实际传输字节数,更贴近底层行为
+- 异常恢复路径更明确
 
 
 ## 🧪 测试体系全面升级
 ## 🧪 测试体系全面升级
 
 
 新增 **7 大类专项测试用例**,覆盖从基础功能到极限压力场景的全流程验证:
 新增 **7 大类专项测试用例**,覆盖从基础功能到极限压力场景的全流程验证:
 
 
-| 测试类别                  | 测试目标                          |
-| ------------------------- | --------------------------------- |
-| 1. 客户端销毁压力测试     | 验证资源释放的幂等性与完整性      |
-| 2. 心跳与超时处理         | Keep-Alive、PINGREQ/RESP 机制验证 |
-| 3. 消息链路完整性         | QoS 0/1/2 消息端到端可靠性验证    |
-| 4. 自动/手动重连机制      | 状态机正确性与连接恢复能力        |
-| 5. 批量/重复订阅测试      | 订阅表一致性、内存安全、去重逻辑  |
-| 6. 多客户端高并发测试     | 20+ 客户端并发运行稳定性          |
-| 7. 单客户端多线程共享测试 | 锁机制、数据一致性、竞态防护      |
+| 测试类别                                                  | 测试目标                          |
+| --------------------------------------------------------- | --------------------------------- |
+| 1. 客户端销毁压力测试                                     | 验证资源释放的幂等性与完整性      |
+| 2. 心跳与超时处理                                         | Keep-Alive、PINGREQ/RESP 机制验证 |
+| 3. 消息链路完整性(QoS 0/1/2)                            | QoS 0/1/2 消息端到端可靠性验证    |
+| 4. 自动/手动重连机制                                      | 状态机正确性与连接恢复能力        |
+| 5. 批量/重复订阅一致性                                    | 订阅表一致性、内存安全、去重逻辑  |
+| 6. 多客户端高并发                                         | 20+ 客户端并发运行稳定性          |
+| 7. 单客户端多线程共享(20 线程 × 各 1000 条 QoS1/2 消息) | 锁机制、数据一致性、竞态防护      |
 
 
 #### 📊 测试覆盖范围
 #### 📊 测试覆盖范围
 
 
@@ -109,16 +95,17 @@ uint32_t platformUptimeMs(void);
 - **可靠性**:长连接、弱网、Keep-Alive、重连机制验证
 - **可靠性**:长连接、弱网、Keep-Alive、重连机制验证
 - **资源安全**:全链路内存泄漏、句柄泄漏检测
 - **资源安全**:全链路内存泄漏、句柄泄漏检测
 
 
-## 📊 代码质量与规范体系
+## 📊 代码质量与规范
 
 
 #### ✅ 工具链全面集成
 #### ✅ 工具链全面集成
 
 
-| 工具                                                         | 用途                                       |
-| ------------------------------------------------------------ | ------------------------------------------ |
-| [ClangFormat](https://clang.llvm.org/docs/ClangFormat.html)  | 统一代码风格(LLVM 标准)                  |
-| [clang-tidy](https://clang.llvm.org/extra/clang-tidy/#clang-tidy) | 静态分析潜在缺陷(空指针、资源泄漏等)     |
-| [Cppcheck](https://cppcheck.sourceforge.io/)                 | 深度扫描内存与资源问题                     |
-| 编译器警告                                                   | `-Wall -Wextra -Weffc++ -Weverything` 全开 |
+| 工具                                                         | 用途                                                       |
+| ------------------------------------------------------------ | ---------------------------------------------------------- |
+| **[Sanitizer](https://clang.llvm.org/docs/index.html#sanitizers)** | 运行时捕获内存与线程安全问题                               |
+| **[clang-tidy](https://clang.llvm.org/extra/clang-tidy/#clang-tidy)** | 静态分析潜在缺陷(空指针、资源泄漏等)                     |
+| **[Cppcheck](https://cppcheck.sourceforge.io/)**             | 深度扫描内存与资源问题                                     |
+| **[ClangFormat](https://clang.llvm.org/docs/ClangFormat.html)** | 统一代码风格                                               |
+| **编译器警告**                                               | `-Wall -Wextra -Weffc++ -Weverything` 等编译时检测全部打开 |
 
 
 #### ✅ 检查重点覆盖
 #### ✅ 检查重点覆盖
 
 
@@ -130,7 +117,7 @@ uint32_t platformUptimeMs(void);
 
 
 ## 🔒 安全性与可靠性全面提升
 ## 🔒 安全性与可靠性全面提升
 
 
-- 全面审查公共 API
+- 公共 API 全面审查
 - 核心数据结构访问均受同步机制保护
 - 核心数据结构访问均受同步机制保护
 - 动态内存策略更健壮,异常路径也能安全释放
 - 动态内存策略更健壮,异常路径也能安全释放
 - 输入验证与边界检查更严格,防御性编程增强
 - 输入验证与边界检查更严格,防御性编程增强
@@ -158,9 +145,7 @@ uint32_t platformUptimeMs(void);
 > RyanMqtt 2.0 在设计上尽量减少破坏性变更。升级过程极为简单:
 > RyanMqtt 2.0 在设计上尽量减少破坏性变更。升级过程极为简单:
 >
 >
 
 
-从 **V1.x** 升级至 **V2.x** 仅需:
-
-**删除** `RyanMqttClientConfig_t` **结构体中的以下四个字段**:
+从 **V1.x** 升级到 **V2.x** 时,仅需在 `RyanMqttClientConfig_t` 结构体中**移除以下四个已废弃字段**:
 
 
 ```c
 ```c
 char *recvBuffer;        // MQTT 接收缓冲区(已废弃)
 char *recvBuffer;        // MQTT 接收缓冲区(已废弃)
@@ -169,8 +154,10 @@ uint32_t recvBufferSize; // 接收缓冲区大小(已废弃)
 uint32_t sendBufferSize; // 发送缓冲区大小(已废弃)
 uint32_t sendBufferSize; // 发送缓冲区大小(已废弃)
 ```
 ```
 
 
-受影响的接口有一个:
+受影响的接口有一个:
 
 
 ```c
 ```c
 RyanMqttError_e RyanMqttSetConfig(RyanMqttClient_t *client, RyanMqttClientConfig_t *clientConfig);
 RyanMqttError_e RyanMqttSetConfig(RyanMqttClient_t *client, RyanMqttClientConfig_t *clientConfig);
-```
+```
+
+> 其余 API 与配置保持兼容,无需额外修改即可完成迁移。