1. 概述
业务软件设计开发过程中会依赖一些基础组件, 事件路由就是常见的基础组件。 本模块结合业务场景, 定制了一个基本的事件路由模块。
本文主要介绍了事件路由模块及其使用方法, 用于指导用户开发。
2. 架构原理
事件路由模块, 提供了一种事件分发的框架。 用户可以自己定义事件以及事件的处理策略。 具体系统框图组成及对外接口关系如图 15-1 所示。
图15-1 事件路由模块系统框图
概括来说, 事件路由模块主要由以下部分构成:
- 订阅者
用户自定义订阅者: 订阅者名称, 事件处理函数, 用户扩展参数, 事件是否同步处理。
- 事件定义
用户自定义事件:事件 ID, 参数 1, 参数 2, 处理结果, 创建时间, 负载。
- 事件发布
支持事件统一发布。
- 事件处理者
订阅者支持异步处理事件, 内部启动线程独立处理。
- 历史事件
支持上一次事件的查询。
3. API 参考
该功能模块为用户提供以下 API:
- HI_EVTHUB_Init: 初始化事件路由模块。
- HI_EVTHUB_Deinit: 去初始化事件路由模块。
- HI_EVTHUB_Register: 注册事件。
- HI_EVTHUB_UnRegister: 解注册事件。
- HI_EVTHUB_Publish: 发布事件。
- HI_EVTHUB_CreateSubscriber: 创建订阅者。
- HI_EVTHUB_DestroySubscriber:销毁订阅者。
- HI_EVTHUB_Subscribe: 订阅事件。
- HI_EVTHUB_UnSubscribe:解订阅事件。
- HI_EVTHUB_GetEventHistory:获取历史事件。
- HI_EVTHUB_SetEnabled:设置使能标记。
- HI_EVTHUB_GetEnabled:获取使能标记。
HI_EVTHUB_Init
【描述】
初始化事件路由模块。
【定义】
HI_S32 HI_EVTHUB_Init();
【参数】
无。
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,参见错误码。 |
【需求】
- 头文件: hi_eventhub.h
- 库文件: libeventhub.a/ libeventhub.so
【注意】
该模块是单实例, 仅需一次初始化。
【举例】
无。
HI_EVTHUB_Deinit
【描述】
去初始化事件路由模块。
【定义】
HI_S32 HI_EVTHUB_Deinit();
【参数】
无。
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,参见错误码。 |
【需求】
- 头文件: hi_eventhub.h
- 库文件: libeventhub.a/ libeventhub.so
【注意】
无。
【举例】
无。
HI_EVTHUB_Register
【描述】
注册事件。
【定义】
HI_S32 HI_EVTHUB_Register(HI_EVENT_ID EventID);
【参数】
参数名称 | 描述 | 输入/输出
--- | ---| ---
EventID| 事件 ID。| 输入
【返回值】
返回值| 描述
---| ---
0 | 成功。
非 0 | 失败,参见错误码。
【需求】
- 头文件: hi_eventhub.h
- 库文件: libeventhub.a/ libeventhub.so
【注意】
无。
【举例】
无。
HI_EVTHUB_UnRegister
【描述】
解注册事件。
【定义】
HI_S32 HI_EVTHUB_UnRegister(HI_EVENT_ID EventID);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
EventID | 事件 ID。 | 输入 |
【返回值】
返回值 | 描述
---|---
0 | 成功。
非 0 | 失败,参见错误码。
【需求】
- 头文件: hi_eventhub.h
- 库文件: libeventhub.a/ libeventhub.so
【注意】
无。
【举例】
无。
HI_EVTHUB_Publish
【描述】
发布事件。
【定义】
HI_S32 HI_EVTHUB_Publish(HI_EVENT_S *pEvent);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pEvent | 事件指针。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,参见错误码。 |
【需求】
- 头文件: hi_eventhub.h
- 库文件: libeventhub.a/ libeventhub.so
【注意】
无。
【举例】
无。
HI_EVTHUB_CreateSubscriber
【描述】
创建订阅者。
【定义】
HI_S32 HI_EVTHUB_CreateSubscriber(HI_SUBSCRIBER_S pstSubscriber,HI_MW_PTR ppSubscriber);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pstSubscriber | 订阅者参数。 | 输入 |
ppSubscriber | 订阅者句柄指针。 | 输出 |
【返回值】
返回值 | 描述
---|---
0 | 成功。
非 0 | 失败,参见错误码。
【需求】
- 头文件: hi_eventhub.h
- 库文件: libeventhub.a/ libeventhub.so
【注意】
无。
【举例】
无。
HI_EVTHUB_DestroySubscriber
【描述】
销毁订阅者。
【定义】
HI_S32 HI_EVTHUB_DestroySubscriber(HI_MW_PTR pSubscriber);
【参数】
参数名称| 描述| 输入/输出
---|---|---
pSubscriber| 订阅者句柄。| 输入
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,参见错误码。 |
HI_EVTHUB_Subscribe
【描述】
订阅事件。
【定义】
HI_S32 HI_EVTHUB_Subscribe(HI_MW_PTR pSubscriber,HI_EVENT_ID EventID);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pSubscriber | 订阅者句柄。 | 输入 |
EventID | 事件 ID。 | 输入 |
【返回值】
返回值 | 描述 |
---|---|
0 | 成功。 |
非 0 | 失败,参见错误码。 |
【需求】
- 头文件: hi_eventhub.h
- 库文件: libeventhub.a/ libeventhub.so
【注意】
无。
【举例】
无。
HI_EVTHUB_UnSubscribe
【描述】
解订阅事件。
【定义】
HI_S32 HI_EVTHUB_UnSubscribe(HI_MW_PTR pSubscriber,HI_EVENT_ID EventID);
【参数】
参数名称 | 描述 | 输入/输出 |
---|---|---|
pSubscriber | 订阅者句柄。 | 输入 |
EventID | 事件 ID。 | 输入 |
【返回值】
返回值| 描述
---|---
0 | 成功。
非 0 | 失败,参见错误码。
【需求】
- 头文件: hi_eventhub.h
- 库文件: libeventhub.a/ libeventhub.so
【注意】
无。
【举例】
无。
HI_EVTHUB_GetEventHistory
【描述】
获取历史事件。
【定义】
HI_S32 HI_EV