Skip to content

快速开始

本页用一个最小的发布 / 订阅程序,带你在几分钟内跑通 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_open 以默认配置打开会话(peer 模式、启用多播自动发现)。
  • 回调中的 sample 已被深拷贝、归你所有,用完必须 onepath_sample_release。所有权与释放规则详见 内存管理
  • 通配符 ** 匹配多层、* 匹配单层,详见 核心概念

第二步:编译

编译你自己的应用时,需要做两件事:定义一个变体宏链接对应的 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=1CONFIG_ONEPATH_VARIANT_TINY=1 之一时,onepath.h#error 直接中止编译。两个宏与链接目标的对应关系见 变体选择

第三步:运行

bash
./app
# 输出:received [demo/example/hello]: world

运行时只需 OnePath 库本身——底层通信引擎已静态内嵌,无任何外部依赖。只要动态链接器能找到 libonepath-*.so(系统库目录、rpathLD_LIBRARY_PATH 任一),程序即可启动。

下一步

OnePath™ 以预构建库形式交付,运行时零外部依赖。