XFusion API v1.3.0
载入中...
搜索中...
未找到

消息总线(发布订阅)。 更多...

mbus 的协作图:

类型定义

typedef void(* xf_task_mbus_func_t) (const void *const data, void *user_data)
 mbus 的数据订阅回调函数原型。
 

函数

xf_err_t xf_task_mbus_reg_topic (uint32_t topic_id, uint32_t size)
 注册 topic。
 
xf_err_t xf_task_mbus_unreg_topic (uint32_t topic_id)
 注销 topic
 
xf_err_t xf_task_mbus_pub_async (uint32_t topic_id, void *data)
 异步发布指定的 topic ,不会阻塞代码运行。
 
xf_err_t xf_task_mbus_pub_sync (uint32_t topic_id, void *data)
 同步发布,直接执行订阅者的回调,执行速度快。
 
xf_err_t xf_task_mbus_sub (uint32_t topic_id, xf_task_mbus_func_t mbus_cb, void *user_data)
 订阅指定的 topic。
 
xf_err_t xf_task_mbus_unsub (uint32_t topic_id, xf_task_mbus_func_t mbus_cb)
 解除订阅。
 
xf_err_t xf_task_mbus_unsub_all (uint32_t topic_id)
 解除 topic下所有订阅。
 
void xf_task_mbus_handle (void)
 处理异步的消息。
 

详细描述

消息总线(发布订阅)。

类型定义说明

◆ xf_task_mbus_func_t

typedef void(* xf_task_mbus_func_t) (const void *const data, void *user_data)

mbus 的数据订阅回调函数原型。

参数
data传输的数据。
user_data用户自定义参数。

在文件 xf_task_mbus.h46 行定义.

函数说明

◆ xf_task_mbus_reg_topic()

xf_err_t xf_task_mbus_reg_topic ( uint32_t  topic_id,
uint32_t  size 
)

注册 topic。

参数
topic_id需要注册的 topic id。
sizetopic 传输数据大小。
返回
xf_err_t
  • XF_ERR_INITED topic 已经被初始化
  • XF_OK topic 注册成功

在文件 xf_task_mbus.c53 行定义.

◆ xf_task_mbus_unreg_topic()

xf_err_t xf_task_mbus_unreg_topic ( uint32_t  topic_id)

注销 topic

参数
topic_idtopic 的 id 号
返回
xf_err_t
  • XF_ERR_NOT_FOUND topic 不存在
  • XF_OK topic 注销成功

在文件 xf_task_mbus.c76 行定义.

◆ xf_task_mbus_pub_async()

xf_err_t xf_task_mbus_pub_async ( uint32_t  topic_id,
void *  data 
)

异步发布指定的 topic ,不会阻塞代码运行。

参数
topic_id需要发布的 topic id。
data传输数据(传递地址方式)。
返回
xf_err_t
  • XF_ERR_INVALID_ARG 参数错误
  • XF_ERR_NOT_FOUND topic 不存在
  • XF_OK topic 发布成功

在文件 xf_task_mbus.c96 行定义.

◆ xf_task_mbus_pub_sync()

xf_err_t xf_task_mbus_pub_sync ( uint32_t  topic_id,
void *  data 
)

同步发布,直接执行订阅者的回调,执行速度快。

参数
topic_id需要发布的 topic id。
data传输数据(传递地址方式)。
返回
xf_err_t
  • XF_ERR_INVALID_ARG 参数错误
  • XF_ERR_NOT_FOUND topic 不存在
  • XF_OK topic 发布成功

在文件 xf_task_mbus.c111 行定义.

◆ xf_task_mbus_sub()

xf_err_t xf_task_mbus_sub ( uint32_t  topic_id,
xf_task_mbus_func_t  mbus_cb,
void *  user_data 
)

订阅指定的 topic。

参数
topic_id订阅的 topic id。
mbus_cb收到消息后处理的回调。
user_data用户的数据。
返回
xf_err_t
  • XF_ERR_INVALID_ARG 参数错误
  • XF_ERR_NOT_FOUND topic 不存在
  • XF_OK topic 订阅成功

在文件 xf_task_mbus.c127 行定义.

◆ xf_task_mbus_unsub()

xf_err_t xf_task_mbus_unsub ( uint32_t  topic_id,
xf_task_mbus_func_t  mbus_cb 
)

解除订阅。

参数
topic_id解除订阅的 topic id。
mbus_cb解除的回调。
返回
xf_err_t
  • XF_ERR_INVALID_ARG 参数错误
  • XF_ERR_NOT_FOUND topic 不存在
  • XF_OK topic 解除订阅成功

在文件 xf_task_mbus.c164 行定义.

◆ xf_task_mbus_unsub_all()

xf_err_t xf_task_mbus_unsub_all ( uint32_t  topic_id)

解除 topic下所有订阅。

参数
topic_id解除订阅的 topic id。
返回
xf_err_t
  • XF_ERR_NOT_FOUND topic 不存在
  • XF_OK topic 解除订阅成功

在文件 xf_task_mbus.c189 行定义.

◆ xf_task_mbus_handle()

void xf_task_mbus_handle ( void  )

处理异步的消息。

注解
给异步订阅使用的,需要循环调用。

在文件 xf_task_mbus.c207 行定义.