提交 0b9702c0 编写于 作者: X xuyong

HiSysEvent接口易用性整改相关资料更新

Signed-off-by: Nxuyong <xuyong59@huawei.com>
上级 ed099635
...@@ -89,7 +89,7 @@ write(info: SysEventInfo): Promise&lt;void&gt; ...@@ -89,7 +89,7 @@ write(info: SysEventInfo): Promise&lt;void&gt;
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| --------- | ----------------------- | ---- | --------------- | | --------- | ----------------------- | ---- | --------------- |
| eventType | [EventType](#eventtype) | 是 | 应用事件类型。 | | info | [SysEventInfo](#syseventinfo) | 是 | 系统事件。 |
**返回值:** **返回值:**
......
...@@ -21,32 +21,61 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接 ...@@ -21,32 +21,61 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接
**表1** HiSysEvent订阅接口 **表1** HiSysEvent订阅接口
| 接口名称 | 描述 | | 接口名称 | 描述 |
| -------- | -------- | | -------- | -------- |
| int32_t&nbsp;HiSysEventManager::AddEventListener(std::shared_ptr&lt;HiSysEventSubscribeCallBack&gt;&nbsp;listener,<br/>&nbsp;std::vector&lt;ListenerRule&gt;&amp;&nbsp;rules) | 接口功能:注册订阅HiSysEvent系统事件侦听对象,可设置规则订阅某些事件。<br/>输入参数:<br/>-&nbsp;listener:订阅回调对象。<br/>-&nbsp;rules:事件订阅规则。<br/>返回值:<br/>-&nbsp;0:订阅成功。<br/>-&nbsp;负值:订阅失败。 | | int32_t&nbsp;HiSysEventManager::AddListener(std::shared_ptr&lt;HiSysEventListener&gt;&nbsp;listener,<br/>&nbsp;std::vector&lt;ListenerRule&gt;&amp;&nbsp;rules) | 接口功能:注册订阅HiSysEvent系统事件侦听对象,可设置规则订阅某些事件。<br/>输入参数:<br/>-&nbsp;listener:订阅回调对象。<br/>-&nbsp;rules:事件订阅规则。<br/>返回值:<br/>-&nbsp;0:订阅成功。<br/>-&nbsp;负值:订阅失败。 |
| int32_t&nbsp;HiSysEventManager::RemoveListener(std::shared_ptr&lt;HiSysEventSubscribeCallBack&gt;&nbsp;listener) | 接口功能:移除订阅hisysevent系统事件侦听对象。<br/>输入参数:<br/>-&nbsp;listener:订阅回调对象。<br/>返回值:<br/>-&nbsp;0:取消订阅成功。<br/>-&nbsp;负值:取消订阅失败。 | | int32_t&nbsp;HiSysEventManager::RemoveListener(std::shared_ptr&lt;HiSysEventListener&gt;&nbsp;listener) | 接口功能:移除订阅hisysevent系统事件侦听对象。<br/>输入参数:<br/>-&nbsp;listener:订阅回调对象。<br/>返回值:<br/>-&nbsp;0:取消订阅成功。<br/>-&nbsp;负值:取消订阅失败。 |
**表2** ListenerRule订阅规则对象 **表2** ListenerRule订阅规则对象
| 接口名称 | 描述 | | 接口名称 | 描述 |
| -------- | -------- | | -------- | -------- |
| ListenerRule(const&nbsp;std::string&amp;&nbsp;tag,<br/>&nbsp;RuleType&nbsp;ruleType&nbsp;=&nbsp;RuleType::WHOLE_WORD) | 接口功能:订阅规则构造函数,创建事件标签订阅规则对象。<br/>输入参数:<br/>-&nbsp;tag:订阅规则的HisysEvent事件标签,字符串类型,最大长度16个字符(含),有效字符包含大小写字母及数字。<br/>-&nbsp;ruleType:订阅规则的规则类型,RuleType枚举类型(参考表3)。 | | ListenerRule(const&nbsp;std::string&amp;&nbsp;tag,<br/>&nbsp;RuleType&nbsp;ruleType&nbsp;=&nbsp;RuleType::WHOLE_WORD) | 接口功能:订阅规则构造函数,创建事件标签订阅规则对象。<br/>输入参数:<br/>-&nbsp;tag:订阅规则的HisysEvent事件标签,字符串类型,最大长度16个字符(含),有效字符包含大小写字母及数字。<br/>-&nbsp;ruleType:订阅规则的规则类型,RuleType枚举类型(参考表3)。 |
| ListenerRule(const&nbsp;std::string&amp;&nbsp;domain,<br/>&nbsp;const&nbsp;std::string&amp;&nbsp;eventName,<br/>&nbsp;RuleType&nbsp;ruleType&nbsp;=&nbsp;RuleType::WHOLE_WORD) | 接口功能:订阅规则构造函数,创建事件领域与事件名称订阅规则对象。<br/>输入参数:<br/>-&nbsp;domain:订阅规则的HisysEvent事件领域,字符串类型,最大长度16个字符(含),有效字符包含大写字母、数字及下划线。<br/>-&nbsp;eventName:订阅规则的HisysEvent事件名称,字符串类型,最大长度32个字符(含),有效字符包含大写字母、数字及下划线。<br/>-&nbsp;ruleType:订阅规则的规则类型,RuleType枚举类型(参考表3)。 | | ListenerRule(const&nbsp;std::string&amp;&nbsp;domain,<br/>&nbsp;const&nbsp;std::string&amp;&nbsp;eventName,<br/>&nbsp;RuleType&nbsp;ruleType&nbsp;=&nbsp;RuleType::WHOLE_WORD) | 接口功能:订阅规则构造函数,创建事件领域与事件名称订阅规则对象。<br/>输入参数:<br/>-&nbsp;domain:订阅规则的HisysEvent事件领域,字符串类型,最大长度16个字符(含),有效字符包含大写字母、数字及下划线。<br/>-&nbsp;eventName:订阅规则的HisysEvent事件名称,字符串类型,最大长度32个字符(含),有效字符包含大写字母、数字及下划线。<br/>-&nbsp;ruleType:订阅规则的规则类型,RuleType枚举类型(参考表3)。 |
| ListenerRule(const&nbsp;std::string&amp;&nbsp;domain,<br/>&nbsp;const&nbsp;std::string&amp;&nbsp;eventName,<br/>&nbsp;const&nbsp;std::string&amp;&nbsp;tag,<br/>&nbsp;RuleType&nbsp;ruleType&nbsp;=&nbsp;RuleType::WHOLE_WORD) | 接口功能:订阅规则构造函数,创建事件领域、事件名称,事件标签订阅规则对象。<br/>输入参数:<br/>-&nbsp;tag:订阅规则的HisysEvent事件标签,字符串类型,最大长度16个字符(含),有效字符包含大小写字母及数字。<br/>-&nbsp;domain:订阅规则的HisysEvent事件领域,字符串类型,最大长度16个字符(含),有效字符包含大写字母、数字及下划线。<br/>-&nbsp;eventName:订阅规则的HisysEvent事件名称,字符串类型,最大长度32个字符(含),有效字符包含大写字母、数字及下划线。<br/>-&nbsp;ruleType:订阅规则的规则类型,RuleType枚举类型(参考表3)。 | | ListenerRule(const&nbsp;std::string&amp;&nbsp;domain,<br/>&nbsp;const&nbsp;std::string&amp;&nbsp;eventName,<br/>&nbsp;const&nbsp;std::string&amp;&nbsp;tag,<br/>&nbsp;RuleType&nbsp;ruleType&nbsp;=&nbsp;RuleType::WHOLE_WORD) | 接口功能:订阅规则构造函数,创建事件领域、事件名称,事件标签订阅规则对象。<br/>输入参数:<br/>-&nbsp;tag:订阅规则的HisysEvent事件标签,字符串类型,最大长度16个字符(含),有效字符包含大小写字母及数字。<br/>-&nbsp;domain:订阅规则的HisysEvent事件领域,字符串类型,最大长度16个字符(含),有效字符包含大写字母、数字及下划线。<br/>-&nbsp;eventName:订阅规则的HisysEvent事件名称,字符串类型,最大长度32个字符(含),有效字符包含大写字母、数字及下划线。<br/>-&nbsp;ruleType:订阅规则的规则类型,RuleType枚举类型(参考表3)。 |
**表3** RuleType类型 **表3** RuleType类型
| 枚举值 | 描述 | | 枚举值 | 描述 |
| -------- | -------- | | -------- | -------- |
| WHOLE_WORD | 全词匹配类型 | | WHOLE_WORD | 全词匹配类型 |
| PREFIX | 前缀匹配类型 | | PREFIX | 前缀匹配类型 |
| REGULAR | 正则匹配类型 | | REGULAR | 正则匹配类型 |
**表4** HiSysEventSubscribeCallBackBase订阅对象 **表4** HiSysEventListener订阅对象
| 接口名称 | 描述 | | 接口名称 | 描述 |
| -------- | -------- | | -------- | -------- |
| void&nbsp;HiSysEventSubscribeCallBack::OnHandle(const&nbsp;std::string&amp;&nbsp;domain,<br/>&nbsp;const&nbsp;std::string&amp;&nbsp;eventName,<br/>&nbsp;const&nbsp;int&nbsp;eventType,<br/>&nbsp;const&nbsp;std::string&amp;&nbsp;eventDetail) | 接口功能:订阅事件的回调接口。<br/>输入参数:<br/>-&nbsp;domain:事件所属领域。<br/>-&nbsp;eventName:事件的名称。<br/>-&nbsp;eventType:事件类型。<br/>-&nbsp;eventDetail:包含事件相关信息的字符串,以json的形式体现。<br/>返回值:<br/>无。 | | void&nbsp;HiSysEventListener::OnEvent(std::shared_ptr&lt;HiSysEventRecord&gt;&nbsp;sysEvent) | 接口功能:订阅事件的回调接口。<br/>输入参数:<br/>-&nbsp;sysEvent:监听到的实时HiSysEvent事件。<br/>返回值:<br/>无。 |
| void&nbsp;HiSysEventListener::OnServiceDied() | 接口功能:服务异常回调。<br/>输入参数:<br/>无。<br/>返回值:<br/>无。 |
**表5** HiSysEventRecord系统事件对象
| 接口名称 | 描述 |
| -------- | -------- |
|std::string&nbsp;HiSysEventRecord::AsJson()|接口功能:获取该系统事件的内容。<br/>输入参数:<br/>无。<br/>返回值:<br/>该系统事件的内容。|
|std::string&nbsp;HiSysEventRecord::GetDomain()|接口功能:获取该系统事件的域名。<br/>输入参数:<br/>无。<br/>返回值:<br/>该系统事件的域名。|
|std::string&nbsp;HiSysEventRecord::GetEventName()|接口功能:获取该系统事件的名称。<br/>输入参数:<br/>无。<br/>返回值:<br/>该系统事件的名称。|
|HiSysEvent::EventType&nbsp;HiSysEventRecord::GetEventType()|接口功能:获取该系统事件的类型。<br/>输入参数:<br/>无。<br/>返回值:<br/>该系统事件的类型。|
|std::string&nbsp;HiSysEventRecord::GetLevel()|接口功能:获取该系统事件的级别。<br/>输入参数:<br/>无。<br/>返回值:<br/>该系统事件的级别。|
|std::string&nbsp;HiSysEventRecord::GetTag()|接口功能:获取该系统事件的标签。<br/>输入参数:<br/>无。<br/>返回值:<br/>该系统事件的标签。|
|std::string&nbsp;HiSysEventRecord::GetTimeZone()|接口功能:获取该系统事件的时区。<br/>输入参数:<br/>无。<br/>返回值:<br/>时区内容,格式为“+0800”。|
|int&nbsp;HiSysEventRecord::GetTraceFlag()|接口功能:获取该系统事件的分布式跟踪标志位。<br/>输入参数:<br/>无。<br/>返回值:<br/>分布式跟踪标志位。|
|int64_t&nbsp;HiSysEventRecord::GetPid()|接口功能:获取落盘该系统事件的进程ID。<br/>输入参数:<br/>无。<br/>返回值:<br/>进程ID。|
|int64_t&nbsp;HiSysEventRecord::GetTid()|接口功能:获取落盘该系统事件的线程ID。<br/>输入参数:<br/>无。<br/>返回值:<br/>线程ID。|
|int64_t&nbsp;HiSysEventRecord::GetUid()|接口功能:获取落盘该系统事件的用户ID。<br/>输入参数:<br/>无。<br/>返回值:<br/>用户ID。|
|uint64_t&nbsp;HiSysEventRecord::GetPspanId()|接口功能:获取该系统事件的分布式跟踪父分支ID。<br/>输入参数:<br/>无。<br/>返回值:<br/>分布式跟踪父分支ID。|
|uint64_t&nbsp;HiSysEventRecord::GetSpandId()|接口功能:获取该系统事件的分布式跟踪分支ID。<br/>输入参数:<br/>无。<br/>返回值:<br/>分布式跟踪分支ID。|
|uint64_t&nbsp;HiSysEventRecord::GetTime()|接口功能:获取该系统事件的时间戳。<br/>输入参数:<br/>无。<br/>返回值:<br/>时间戳。|
|uint64_t&nbsp;HiSysEventRecord::GetTraceId()|接口功能:获取该系统事件的分布式跟踪链ID。<br/>输入参数:<br/>无。<br/>返回值:<br/>分布式跟踪链ID。|
|void&nbsp;HiSysEventRecord::GetParamNames(std::vector&lt;std::string&gt;&amp;&nbsp;params)|接口功能:获取该系统事件的所有键名。<br/>输入参数:<br/>-&nbsp;params:键名数组引用。<br/>返回值:<br/>无。|
|int&nbsp;HiSysEventRecord::GetParamValue(const std::string&amp;&nbsp;param,&nbsp;int64_t&amp;&nbsp;value)|接口功能:将该系统事件键名为param的值解析为int64_t类型的值。<br/>输入参数:<br/>-&nbsp;param:键名。<br/>-&nbsp;value:int64_t类型引用。<br/>返回值:<br/>-&nbsp;0:解析成功。<br/>-&nbsp;-1:该系统事件初始化失败,无法解析。<br/>-&nbsp;-2:不存在的键名。<br/>-&nbsp;-3:类型不匹配,无法转换成int64_t类型的值。|
|int&nbsp;HiSysEventRecord::GetParamValue(const std::string&amp;&nbsp;param,&nbsp;uint64_t&amp;&nbsp;value)|接口功能:将该系统事件键名为param的值解析为uint64_t类型的值。<br/>输入参数:<br/>-&nbsp;param:键名。<br/>-&nbsp;value:uint64_t类型引用。<br/>返回值:<br/>-&nbsp;0:解析成功。<br/>-&nbsp;-1:该系统事件初始化失败,无法解析。<br/>-&nbsp;-2:不存在的键名。<br/>-&nbsp;-3:类型不匹配,无法转换成uint64_t类型的值。|
|int&nbsp;HiSysEventRecord::GetParamValue(const std::string&amp;&nbsp;param,&nbsp;double&amp;&nbsp;value)|接口功能:将该系统事件键名为param的值解析为double类型的值。<br/>输入参数:<br/>-&nbsp;param:键名。<br/>-&nbsp;value:double类型引用。<br/>返回值:<br/>-&nbsp;0:解析成功。<br/>-&nbsp;-1:该系统事件初始化失败,无法解析。<br/>-&nbsp;-2:不存在的键名。<br/>-&nbsp;-3:类型不匹配,无法转换成double类型的值。|
|int&nbsp;HiSysEventRecord::GetParamValue(const std::string&amp;&nbsp;param,&nbsp;std::string&amp; value)|接口功能:将该系统事件键名为param的值解析为string类型的值。<br/>输入参数:<br/>-&nbsp;param:键名。<br/>-&nbsp;value:std::string类型引用。<br/>返回值:<br/>-&nbsp;0:解析成功。<br/>-&nbsp;-1:该系统事件初始化失败,无法解析。<br/>-&nbsp;-2:不存在的键名。<br/>-&nbsp;-3:类型不匹配,无法转换成std::string类型的值。|
|int&nbsp;HiSysEventRecord::GetParamValue(const std::string&amp;&nbsp;param,&nbsp;std::vector&lt;int64_t&gt;&amp;&nbsp;value)|接口功能:将该系统事件键名为param的值解析为int64_t类型的数组。<br/>输入参数:<br/>-&nbsp;param:键名。<br/>-&nbsp;value:int64_t类型数组引用。<br/>返回值:<br/>-&nbsp;0:解析成功。<br/>-&nbsp;-1:该系统事件初始化失败,无法解析。<br/>-&nbsp;-2:不存在的键名。<br/>-&nbsp;-3:类型不匹配,无法转换成int64_t类型的数组。|
|int&nbsp;HiSysEventRecord::GetParamValue(const std::string&amp;&nbsp;param,&nbsp;std::vector&lt;uint64_t&gt;&amp;&nbsp;value)|接口功能:将该系统事件键名为param的值解析为uint64_t类型的数组。<br/>输入参数:<br/>-&nbsp;param:键名。<br/>-&nbsp;value:uint64_t类型数组引用。<br/>返回值:<br/>-&nbsp;0:解析成功。<br/>-&nbsp;-1:该系统事件初始化失败,无法解析。<br/>-&nbsp;-2:不存在的键名。<br/>-&nbsp;-3:类型不匹配,无法转换成uint64_t类型的数组。|
|int&nbsp;HiSysEventRecord::GetParamValue(const std::string&amp;&nbsp;param,&nbsp;std::vector&lt;double&gt;&amp;&nbsp;value)|接口功能:将该系统事件键名为param的值解析为double类型的数组。<br/>输入参数:<br/>-&nbsp;param:键名。<br/>-&nbsp;value:ouble类型数组引用。<br/>返回值:<br/>-&nbsp;0:解析成功。<br/>-&nbsp;-1:该系统事件初始化失败,无法解析。<br/>-&nbsp;-2:不存在的键名。<br/>-&nbsp;-3:类型不匹配,无法转换成double类型的数组。|
|int&nbsp;HiSysEventRecord::GetParamValue(const std::string&amp;&nbsp;param,&nbsp;std::vector&lt;std::string&gt;&amp;&nbsp;value)|接口功能:将该系统事件键名为param的值解析为string类型的数组。<br/>输入参数:<br/>-&nbsp;param:键名。<br/>-&nbsp;value:std::string类型数组引用。<br/>返回值:<br/>-&nbsp;0:解析成功。<br/>-&nbsp;-1:该系统事件初始化失败,无法解析。<br/>-&nbsp;-2:不存在的键名。<br/>-&nbsp;-3:类型不匹配,无法转换成std::string类型的数组。|
## 开发实例 ## 开发实例
...@@ -59,21 +88,21 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接 ...@@ -59,21 +88,21 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接
1. 源代码开发 1. 源代码开发
自定义订阅回调实现类头文件DemoListener.h: 自定义订阅回调实现类头文件DemoListener.h:
``` ```
#ifndef DEMO_LISTENER_H #ifndef DEMO_LISTENER_H
#define DEMO_LISTENER_H #define DEMO_LISTENER_H
#include "hisysevent_subscribe_callback.h" #include "hisysevent_listener.h"
#include <string> #include <string>
class DemoListener : public OHOS::HiviewDFX::HiSysEventSubscribeCallBack { class DemoListener : public OHOS::HiviewDFX::HiSysEventListener {
public: public:
explicit DemoListener() : HiSysEventSubscribeCallBack() {} explicit DemoListener() : HiSysEventListener() {}
void OnHandle(const std::string& domain, const std::string& eventName, const int eventType, virtual ~DemoListener() {}
const std::string& eventDetail);
virtual ~DemoListener() {} public:
void OnEvent(std::shared_ptr<HiSysEventRecord> sysEvent);
void OnServiceDied(); void OnServiceDied();
}; };
...@@ -82,18 +111,19 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接 ...@@ -82,18 +111,19 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接
增加DemoListener.cpp文件,在DemoListener类中根据实际需求自定义订阅回调接口的实现逻辑: 增加DemoListener.cpp文件,在DemoListener类中根据实际需求自定义订阅回调接口的实现逻辑:
``` ```
#include "demo_listener.h" #include "demo_listener.h"
#include <iostream> #include <iostream>
void DemoListener::OnHandle(const std::string& domain, const std::string& eventName, void DemoListener::OnEvent(std::shared_ptr<HiSysEventRecord> sysEvent)
const int eventType, const std::string& eventDetail)
{ {
std::cout << eventDetail << std::endl; if (sysEvent == nullptr) {
return;
}
std::cout << sysEvent.AsJson() << std::endl;
} }
void DemoListener::OnServiceDied() void DemoListener::OnServiceDied()
{ {
std::cout << std::string("service disconnect, exit") << std::endl; std::cout << std::string("service disconnect, exit") << std::endl;
...@@ -103,7 +133,6 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接 ...@@ -103,7 +133,6 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接
通过HiSysEventManager类提供的AddEventListener接口注册回调对象,完成对HiSysEvent的订阅: 通过HiSysEventManager类提供的AddEventListener接口注册回调对象,完成对HiSysEvent的订阅:
``` ```
auto demoListener = std::make_shared<DemoListener>(); auto demoListener = std::make_shared<DemoListener>();
// 事件标签规则订阅,规则类型为默认的全词匹配类型 // 事件标签规则订阅,规则类型为默认的全词匹配类型
...@@ -120,9 +149,11 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接 ...@@ -120,9 +149,11 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接
``` ```
2. 编译配置 2. 编译配置
在BUILD.gn编译文件中,需要添加依赖hisysevent_native组件的libhisyseventmanager库: 在BUILD.gn编译文件中,需要添加依赖hisysevent_native组件的libhisysevent及libhisyseventmanager库:
``` ```
external_deps = [ "hisysevent_native:libhisyseventmanager", ] external_deps = [
"hisysevent_native:libhisysevent",
"hisysevent_native:libhisyseventmanager",
]
``` ```
...@@ -11,33 +11,36 @@ HiSysEvent提供了查询接口,支持开发者设置条件查询HiSysEvent事 ...@@ -11,33 +11,36 @@ HiSysEvent提供了查询接口,支持开发者设置条件查询HiSysEvent事
### 接口说明 ### 接口说明
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
>
> HiSysEventQueryCallback查询回调对象OnQuery方法中的形参类型HiSysEventRecord请参考[HiSysEvent订阅](subsys-dfx-hisysevent-listening.md)中的**表5**HiSysEventRecord系统事件对象说明
**表1** HiSysEvent查询接口 **表1** HiSysEvent查询接口
| 接口名 | 描述 | | 接口名 | 描述 |
| -------- | -------- | | -------- | -------- |
| int32_t&nbsp;HiSysEventManager::QueryHiSysEvent(struct&nbsp;QueryArg&amp;&nbsp;queryArg,<br/>&nbsp;std::vector&lt;QueryRule&gt;&amp;&nbsp;queryRules,<br/>&nbsp;std::shared_ptr&lt;HiSysEventQueryCallBack&gt;&nbsp;queryCallBack) | 接口功能:支持设置查询时间段,事件领域,事件名称等,查询满足条件的HiSysEvent事件。<br/>输入参数:<br/>-&nbsp;queryArg:查询参数。<br/>-&nbsp;queryRules:事件过滤规则。<br/>-&nbsp;queryCallBack:查询接口回调对象。<br/>返回值:<br/>-&nbsp;0:查询成功。<br/>-&nbsp;负值:查询失败。 | | int32_t&nbsp;HiSysEventManager::Query(struct&nbsp;QueryArg&amp;&nbsp;arg,<br/>&nbsp;std::vector&lt;QueryRule&gt;&amp;&nbsp;rules,<br/>&nbsp;std::shared_ptr&lt;HiSysEventQueryCallback&gt;&nbsp;callback) | 接口功能:支持设置时间段,事件领域,事件名称等,查询满足条件的HiSysEvent事件。<br/>输入参数:<br/>-&nbsp;arg:查询参数。<br/>-&nbsp;rules:事件过滤规则。<br/>-&nbsp;callback:查询接口回调对象。<br/>返回值:<br/>-&nbsp;0:查询成功。<br/>-&nbsp;负值:查询失败。 |
**表2** QueryArg查询参数对象 **表2** QueryArg查询参数对象
| 属性名称 | 描述 | | 属性名称 | 描述 |
| -------- | -------- | | -------- | -------- |
| beginTime | long&nbsp;long&nbsp;int类型,用于指定查询事件的开始时间。 | | beginTime | long&nbsp;long&nbsp;int类型,用于指定查询事件的开始时间。 |
| endTime | long&nbsp;long&nbsp;int类型,用于指定查询事件的结束时间。 | | endTime | long&nbsp;long&nbsp;int类型,用于指定查询事件的结束时间。 |
| maxEvents | int类型,用于指定查询返回事件查询的最多条数。 | | maxEvents | int类型,用于指定查询返回事件查询的最多条数。 |
**表3** QueryRule查询规则对象 **表3** QueryRule查询规则对象
| 接口名称 | 描述 | | 接口名称 | 描述 |
| -------- | -------- | | -------- | -------- |
| QueryRule(const&nbsp;std::string&amp;&nbsp;domain,<br/>&nbsp;const&nbsp;std::vector&lt;std::string&gt;&amp;&nbsp;eventList) | 接口功能:查询规则构造函数,创建查询规则对象。<br/>输入参数:<br/>-&nbsp;domain:string类型,用来标识查询规则对象的事件所属领域,如果传入的是空字符串,则默认事件领域字段匹配成功。<br/>-&nbsp;eventList:std::vector&lt;std::string&gt;类型,事件名称的列表,如果传入的是空字符串,则默认事件名称字段匹配成功。 | | QueryRule(const&nbsp;std::string&amp;&nbsp;domain,<br/>&nbsp;const&nbsp;std::vector&lt;std::string&gt;&amp;&nbsp;eventList) | 接口功能:查询规则构造函数,创建查询规则对象。<br/>输入参数:<br/>-&nbsp;domain:string类型,用来标识查询规则对象的事件所属领域,如果传入的是空字符串,则默认事件领域字段匹配成功。<br/>-&nbsp;eventList:std::vector&lt;std::string&gt;类型,事件名称的列表,如果传入的是空字符串,则默认事件名称字段匹配成功。 |
**表4** HiSysEventQueryCallBack查询回调对象 **表4** HiSysEventQueryCallback查询回调对象
| 接口名称 | 描述 | | 接口名称 | 描述 |
| -------- | -------- | | -------- | -------- |
| void&nbsp;HiSysEventQueryCallBack::OnQuery(const&nbsp;::std::vector&lt;std::string&gt;&amp;&nbsp;sysEvent,<br/>&nbsp;const&nbsp;::std::vector&lt;int64_t&gt;&amp;&nbsp;seq) | 接口功能:订阅事件查询中的回调。<br/>输入参数:<br/>-&nbsp;sysEvent:返回事件集合。<br/>-&nbsp;seq:事件序列集合。<br/>返回值:<br/>无。 | | void&nbsp;HiSysEventQueryCallBack::OnQuery(std::shared_ptr&lt;std::vector&lt;HiSysEventRecord&gt;&gt;&nbsp;sysEvents) | 接口功能:事件查询的回调。<br/>输入参数:<br/>-&nbsp;sysEvents:返回的事件集合。<br/>返回值:<br/>无。 |
| void&nbsp;HiSysEventQueryCallBack::OnComplete(int32_t&nbsp;reason,&nbsp;int32_t&nbsp;total) | 接口功能:订阅事件查询完成的回调。<br/>输入参数:<br/>-&nbsp;reason:查询结束返回原因,目前默认是0。<br/>-&nbsp;total:本次查询总共返回的事件总数量。<br/>返回值:<br/>无。 | | void&nbsp;HiSysEventQueryCallBack::OnComplete(int32_t&nbsp;reason,&nbsp;int32_t&nbsp;total) | 接口功能:事件查询完成的回调。<br/>输入参数:<br/>-&nbsp;reason:查询结束返回原因,目前默认是0。<br/>-&nbsp;total:本次查询总共返回的事件总数量。<br/>返回值:<br/>无。 |
### 开发实例 ### 开发实例
...@@ -45,42 +48,44 @@ C++接口实例。 ...@@ -45,42 +48,44 @@ C++接口实例。
1. 源代码开发: 1. 源代码开发:
引入对应的头文件: 引入对应的头文件:
``` ```
#include "hisysevent_manager.h" #include "hisysevent_manager.h"
``` ```
实现对应的查询回调接口: 实现对应的查询回调接口:
``` ```
void HiSysEventQueryCallBack::OnQuery(const ::std::vector<std::string>& sysEvent, const ::std::vector<int64_t>& seq) void HiSysEventQueryCallBack::OnQuery(std::shared_ptr<std::vector<HiSysEventRecord>> sysEvents)
void HiSysEventQueryCallBack::OnComplete(int32_t reason, int32_t total) void HiSysEventQueryCallBack::OnComplete(int32_t reason, int32_t total)
``` ```
在相应的业务逻辑里面调用查询接口: 在相应的业务逻辑里面调用查询接口:
``` ```
HiSysEventManager::QueryHiSysEvent(struct QueryArg& queryArg, HiSysEventManager::Query(struct QueryArg& queryArg,
std::vector<QueryRule>& queryRules, std::shared_ptr<HiSysEventQueryCallBack> queryCallBack) std::vector<QueryRule>& queryRules, std::shared_ptr<HiSysEventQueryCallBack> queryCallBack)
``` ```
以下是查询所有系统事件的应用例子: 以下是查询所有系统事件的应用例子:
``` ```
#include "hisysevent_manager.h" #include "hisysevent_manager.h"
#include <iostream> #include <iostream>
namespace OHOS { namespace OHOS {
namespace HiviewDFX { namespace HiviewDFX {
// 实现查询回调的接口 // 实现查询回调的接口
void HiSysEventToolQuery::OnQuery(const ::std::vector<std::string>& sysEvent, void HiSysEventToolQuery::OnQuery(std::shared_ptr<std::vector<HiSysEventRecord>> sysEvents)
const ::std::vector<int64_t>& seq)
{ {
for_each(sysEvent.cbegin(), sysEvent.cend(), [](const std::string &tmp) { if (sysEvents == nullptr) {
std::cout << tmp << std::endl; return;
}
for_each((*sysEvent).cbegin(), (*sysEvent).cend(), [](const HiSysEventRecord& event) {
std::cout << event.AsJson() << std::endl;
}); });
} }
void HiSysEventToolQuery::OnComplete(int32_t reason, int32_t total) void HiSysEventToolQuery::OnComplete(int32_t reason, int32_t total)
{ {
return; return;
...@@ -91,14 +96,17 @@ C++接口实例。 ...@@ -91,14 +96,17 @@ C++接口实例。
// 调用查询接口获取HiSysEvent事件 // 调用查询接口获取HiSysEvent事件
auto queryCallBack = std::make_shared<HiSysEventToolQuery>(); auto queryCallBack = std::make_shared<HiSysEventToolQuery>();
struct QueryArg args(clientCmdArg.beginTime, clientCmdArg.endTime, clientCmdArg.maxEvents); struct QueryArg args(clientCmdArg.beginTime, clientCmdArg.endTime, clientCmdArg.maxEvents);
std::vector<QueryRule> mRules; std::vector<QueryRule> rules;
HiSysEventManager::QueryHiSysEvent(args, mRules, queryCallBack); HiSysEventManager::QueryHiSysEvent(args, rules, queryCallBack);
``` ```
2. 编译设置: 2. 编译设置:
在BUILD.gn编译文件中,需要添加依赖hisysevent_native部件的libhisyseventmanager库。 在BUILD.gn编译文件中,需要添加依赖hisysevent_native部件的libhisysevent及libhisyseventmanager库。
``` ```
external_deps = [ "hisysevent_native:libhisyseventmanager", ] external_deps = [
"hisysevent_native:libhisysevent",
"hisysevent_native:libhisyseventmanager",
]
``` ```
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
| 选项名称 | 功能说明 | | 选项名称 | 功能说明 |
| -------- | -------- | | -------- | -------- |
| -l | 以缺省设置查询历史HiSysEvent事件,此次查询会返回最近不多于1000条的HiSysEvent事件。 | | -l | 以缺省设置查询历史HiSysEvent事件,此次查询会返回不多于10000条的HiSysEvent事件。 |
- 通过设置开始/结束时间,过滤查询历史HiSysEvent事件的结果的命令: - 通过设置开始/结束时间,过滤查询历史HiSysEvent事件的结果的命令:
...@@ -130,7 +130,7 @@ ...@@ -130,7 +130,7 @@
| 选项名称 | 功能说明 | | 选项名称 | 功能说明 |
| -------- | -------- | | -------- | -------- |
| -m | 设置查询历史HiSysEvent事件的数量,有效值范围[0,1000],此次查询返回的HiSysEvent事件数目不会多于此值。 | | -m | 设置查询历史HiSysEvent事件的数量,此次查询会返回最多不超过指定数量的HiSysEvent事件。 |
命令实例: 命令实例:
...@@ -151,7 +151,7 @@ ...@@ -151,7 +151,7 @@
| 选项名称 | 功能说明 | | 选项名称 | 功能说明 |
| -------- | -------- | | -------- | -------- |
| -v | 配合订阅命令-r及查询命令-l使用,当打开事件合法性校验模式,系统事件包含的非法内容会标记为红色高亮显示。 | | -v | 配合订阅命令-r及查询命令-l使用,当打开事件合法性校验模式,系统事件包含的非法内容会红色高亮显示。 |
命令实例: 命令实例:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册