Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Tags: lib3yu/innet

Tags

v0.2.0

Toggle v0.2.0's commit message
feat(demo): 动态显示每个示例程序的运行命令

v0.1.0

Toggle v0.1.0's commit message
feat: 重构 innet 库,简化 API 并优化线程安全模型

此次提交对 innet 发布-订阅库进行了重大重构,旨在简化接口、提升代码健壮性并优化性能。

**核心变更:**

*   **API 简化与清理:**
    *   移除了 `innet_publish_signal`, `innet_publish_signal_async`, `innet_notify`, `innet_pull` 等复杂功能,使库更专注于核心的发布/订阅模式。
    *   `innet_subscribe` 现在直接接受发布者名称,移除了 `innet_subscribe_name`。
    *   `innet_publish` 增加了超时参数 `timeout_ms`,用于处理阻塞策略下的发布。
    *   重构了 `innet_node_conf_t`,移除了 `notify_size_check` 字段。
    *   新增 `innet_subscriber_num` 和简化版 `innet_inbox_len` 用于获取运行时信息。

*   **架构与实现优化:**
    *   引入了 `Inbox` 类,将收件箱的逻辑(包括容量、丢弃策略、阻塞等待)封装起来,代码更清晰、更易于维护。
    *   使用 `NodeMgr` 和 `PendingMgr` 单例类管理全局节点和待定订阅,替代了全局变量和复杂的读写锁。
    *   移除了独立的异步信号处理线程及其相关代码,大幅简化了线程模型。
    *   新增 `innet_lock.hpp`,提供了 `Mutex`, `RWLock`, `CondVar` 等 C++ RAII 风格的封装,提升了代码安全性和可读性。
    *   为 C++11 编译器提供了 `std::make_unique` 的兼容性实现。

*   **构建与示例更新:**
    *   更新 `Makefile` 和 `examples/Makefile`,将 C++ 标准从 C++17 降级为 C++11 以提高兼容性,并添加了调试符号。
    *   将旧的 `demo.c` 拆分为两个更清晰的示例:`demo_industry.c` (工业控制模拟) 和 `demo_pubsub.c` (基础发布/订阅演示)。
    *   在 `README.md` 中更新了构建指令、API 概览和示例说明,移除了已删除功能的文档。
    *   新增 `.roo/rules/01-general.md` 文件,提供了快速编译和运行 Demo 的指令。