快速开始
本页用一个最小的发布 / 订阅程序,带你在几分钟内跑通 OnePath。在此之前,请先按 安装与集成 装好 OnePath 库(RPM 或直接放置预构建 .so 均可)。
第一步:写代码
下面这段程序在同一进程内同时建立一个订阅者与一次发布——订阅者通过通配符 demo/example/** 匹配,收到消息后在回调里打印并释放样本。
c
#include <onepath.h>
#include <stdio.h>
static void on_sample(onepath_sample_t *sample, void *userdata)
{
(void)userdata;
printf("received [%s]: %.*s\n",
sample->key, (int)sample->data_len, (const char *)sample->data);
onepath_sample_release(sample); /* 回调收到的样本归你所有,用完必须释放 */
}
int main(void)
{
onepath_session_t s;
onepath_subscriber_t sub;
onepath_open(&s); /* 默认 peer 模式 + 自动发现 */
onepath_subscribe(s, &sub, "demo/example/**", on_sample, NULL);
onepath_put_str(s, "demo/example/hello", "world"); /* 一次性发布,无需声明发布者 */
onepath_sleep_s(1); /* 留时间给订阅回调 */
onepath_subscriber_destroy(sub);
onepath_close(s);
return 0;
}关键点
第二步:编译
编译你自己的应用时,需要做两件事:定义一个变体宏、链接对应的 OnePath 库。最省事的方式是用 pkg-config(开发包安装后自动可用,变体宏会被自动带上):
bash
# full 变体(桌面 / 服务器)
gcc $(pkg-config --cflags --libs libonepath-full) app.c -o app
# tiny 变体(嵌入式 / 边缘网关)
gcc $(pkg-config --cflags --libs libonepath-tiny) app.c -o app若未通过 RPM 安装、而是直接使用预构建库目录,则手动给出头文件目录、变体宏、库与运行时搜索路径:
bash
gcc -DCONFIG_ONEPATH_VARIANT_FULL=1 \
-I<onepath>/include \
-L<onepath>/lib -lonepath-full \
-Wl,-rpath,<onepath>/lib \
app.c -o app必须定义变体宏
未定义 CONFIG_ONEPATH_VARIANT_FULL=1 或 CONFIG_ONEPATH_VARIANT_TINY=1 之一时,onepath.h 会 #error 直接中止编译。两个宏与链接目标的对应关系见 变体选择。
第三步:运行
bash
./app
# 输出:received [demo/example/hello]: world运行时只需 OnePath 库本身——底层通信引擎已静态内嵌,无任何外部依赖。只要动态链接器能找到 libonepath-*.so(系统库目录、rpath 或 LD_LIBRARY_PATH 任一),程序即可启动。