19#if XF_TASK_MBUS_IS_ENABLE
49#define DEFAULT_QUEUE_COUNT (2)
69 mtopic->
id = topic_id;
82 XF_LOGE(
TAG,
"topic:%d not found", (
int)topic_id);
103 XF_LOGE(
TAG,
"topic:%d not found", (
int)topic_id);
118 XF_LOGE(
TAG,
"topic:%d not found", (
int)topic_id);
135 XF_LOGE(
TAG,
"topic:%d not found", (
int)topic_id);
140 if (msub->
mbus_cb == mbus_cb) {
172 XF_LOGE(
TAG,
"topic:%d not found", (
int)topic_id);
177 if (msub->
mbus_cb == mbus_cb) {
195 XF_LOGE(
TAG,
"topic:%d not found", (
int)topic_id);
234 if (mtopic->
id == topic_id) {
void(* xf_task_mbus_func_t)(const void *const data, void *user_data)
mbus 的数据订阅回调函数原型。
xf_err_t xf_task_mbus_unsub(uint32_t topic_id, xf_task_mbus_func_t mbus_cb)
解除订阅。
xf_err_t xf_task_mbus_reg_topic(uint32_t topic_id, uint32_t size)
注册 topic。
xf_err_t xf_task_mbus_pub_async(uint32_t topic_id, void *data)
异步发布指定的 topic ,不会阻塞代码运行。
xf_err_t xf_task_mbus_unsub_all(uint32_t topic_id)
解除 topic下所有订阅。
void xf_task_mbus_handle(void)
处理异步的消息。
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_pub_sync(uint32_t topic_id, void *data)
同步发布,直接执行订阅者的回调,执行速度快。
xf_err_t xf_task_mbus_unreg_topic(uint32_t topic_id)
注销 topic
bool xf_task_queue_is_empty(const xf_task_queue_t *const queue)
判断队列是否为空。
xf_err_t xf_task_queue_init(xf_task_queue_t *const queue, void *data, const size_t size, const size_t count)
队列对象初始化。
xf_err_t xf_task_queue_remove_front(xf_task_queue_t *const queue)
从队列删除第一个元素。
void * xf_task_queue_peek(const xf_task_queue_t *const queue)
获取队列第一个元素。
xf_err_t xf_task_queue_send(xf_task_queue_t *const queue, void *item, const xf_task_queue_mode_t pos)
队列发送数据。
@ XF_TASK_QUEUE_SEND_TO_BACK
#define XF_ASSERT(condition, retval, tag, format,...)
xfusion 断言宏(条件 不成立 时则输出日志后返回)。
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
static void xf_list_init(xf_list_t *list)
动态初始化链表.
static void xf_list_add_tail(xf_list_t *new_node, xf_list_t *head)
xf_list_add_tail - 在指定节点之前添加一个 new_node.
static void xf_list_del_init(xf_list_t *entry)
xf_list_del_init - 从链表中删除节点, 并重新初始化.
#define XF_LIST_HEAD_INIT(name)
静态定义时初始化链表。
#define xf_list_for_each_entry_safe(pos, n, head, type, member)
list_for_each_entry_safe - 安全地迭代给定类型的链表,可删除链表节点。
#define xf_list_for_each_entry(pos, head, type, member)
list_for_each_entry - 迭代给定类型的链表。
xf_task_mbus_func_t mbus_cb
xf_task_queue_t pub_queue
#define XF_LOGE(tag, format,...)
#define XF_LOGD(tag, format,...)
#define DEFAULT_QUEUE_COUNT
struct _xf_task_xsub_t xf_task_msub_t
static xf_list_t _topic_list
static xf_err_t xf_task_mbus_find(uint32_t topic_id, xf_task_mtopic_t **topic)
struct _xf_task_xtopic_t xf_task_mtopic_t
static void xf_task_mbus_run(xf_task_mtopic_t *mtopic, void *data)