- uSPF(Micro Subscribe Publish Frame)是一个轻量级发布-订阅模式的框架,甚至没有 broker(代理),特别适合嵌入式应用,详细文档见uSPF微型框架的介绍。
- uSPF 库 引用了 ttlib_mirco,所以需要 --recursive 后缀。
git clone https://github.com/tangaoo/uSPF.git --recursive
cd uSPF
make
- uSPF 框架依赖 ttlib_mirco库(即工程中dep目录),具体可见项目主页。
typedef struct __demo_data_t
{
const char* name;
int a;
}demo_data_t, *demo_data_ref_t;
USPF_MSG_DEFINE(demo_topic, sizeof(demo_data_t));
uspf_register(USPF_MSG_ID(demo_topic), NULL);
- 异步注册,poll 时不会阻塞。
uspf_node_ref_t node = uspf_subscribe(USPF_MSG_ID(demo_topic), USPF_ASYNC, tt_null);
- 同步注册,poll 时会阻塞。
uspf_node_ref_t node = uspf_subscribe(USPF_MSG_ID(demo_topic), USPF_SYNC, tt_null);
uspf_publish(USPF_MSG_ID(demo_topic), &data);
- 异步轮询,非阻塞。
uspf_poll(node);
- 同步轮询,阻塞。
uspf_poll_sync(node);
uspf_copy(USPF_MSG_ID(demo_topic), node, &data);
- publish 代码与 subscribe 代码分属不同文件时,一般定义 topic 放在 publish 部分,而声名放在 subscribe 部分。
- 详细部分参见example。
- 引入 ttlib_mirco 库,替换目前的链表操作;
- 目前仅支持数据包形式订阅,后续需要支持纯流数据的支持,用 ringbuffer 实现;
- 目前仅支持单进程内部订阅与发布,后续需支持多进程。
- 引入 protobuf。