1# HiSysEvent查询指导<a name="ZH-CN_TOPIC_0000001231455461"></a> 2 3 4## 概述<a name="section279684125212"></a> 5 6HiSysEvent提供了查询接口,支持开发者设置条件查询HiSysEvent事件,例如功耗部件可以通过该接口获取所需的系统事件进行业务分析。 7 8## 开发指导<a name="section315316761113"></a> 9 10### 接口说明<a name="section03869128521"></a> 11 12**表 1** HiSysEvent查询接口 13 14| 接口名称 | 描述 | 15| -------- | --------- | 16| bool HiSysEventManager::QueryHiSysEvent(struct QueryArg& queryArg, std::vector<QueryRule>& queryRules, std::shared_ptr<HiSysEventQueryCallBack> queryCallBack) | 接口功能:<br>  支持设置查询时间段,事件领域,事件名称等,查询满足条件的HiSysEvent事件。<br><br>输入参数:<ul><li>queryArg:查询参数。</li><li>queryRules:事件过滤规则。</li><li>queryCallBack:查询接口回调对象。</li></ul>返回值:<ul><li>true:查询成功。</li><li>false:查询失败。</li></ul> | 17 18 19**表 2** QueryArg查询参数对象 20 21| 属性名称 | 描述 | 22| -------- | --------- | 23| beginTime | long long int类型,用于指定查询事件的开始时间。 | 24| endTime | long long int类型,用于指定查询事件的结束时间。 | 25| maxEvents | int类型,用于指定查询返回事件查询的最多条数。 | 26 27**表 3** QueryRule查询规则对象 28 29| 接口名称 | 描述 | 30| -------- | --------- | 31| QueryRule(const std::string& domain, const std::vector<std::string>& eventList) | 接口功能:查询规则构造函数,创建查询规则对象。<br><br>输入参数:<ul><li>domain:string类型,用来标识查询规则对象的事件所属领域,如果传入的是空字符串,则默认事件领域字段匹配成功。</li><li>eventList:std::vector<std::string>类型,事件名称的列表,如果传入的是空字符串,则默认事件名称字段匹配成功。</li></ul> | 32 33**表 4** HiSysEventQueryCallBack查询回调对象 34 35| 接口名称 | 描述 | 36| -------- | --------- | 37| void HiSysEventQueryCallBack::OnQuery(const ::std::vector<std::string>& sysEvent, const ::std::vector<int64_t>& seq) | 接口功能:订阅事件查询中的回调。<br><br>输入参数:<ul><li>sysEvent:返回事件集合。</li><li>seq:事件序列集合。</li></ul>返回值:<br>  无。 | 38| void HiSysEventQueryCallBack::OnComplete(int32_t reason, int32_t total) | 接口功能:订阅事件查询完成的回调。<br><br>输入参数:<ul><li>reason:查询结束返回原因,目前默认是0。</li><li>total:本次查询总共返回的事件总数量。</li></ul>返回值:<br>  无。 | 39 40### 开发实例<a name="section14286111855212"></a> 41 42C++接口实例。 43 441. 源代码开发: 45 46 - 引入对应的头文件: 47 48 hisysevent\_manager.h 49 50 - 实现对应的查询回调接口: 51 52 void HiSysEventQueryCallBack::OnQuery\(const ::std::vector<std::string>& sysEvent, const ::std::vector<int64\_t\>& seq\) 53 54 void HiSysEventQueryCallBack::OnComplete\(int32\_t reason, int32\_t total\) 55 56 - 在相应的业务逻辑里面调用查询接口: 57 58 HiSysEventManager::QueryHiSysEvent\(struct QueryArg& queryArg, std::vector<QueryRule\>& queryRules, std::shared\_ptr<HiSysEventQueryCallBack\> queryCallBack\) 59 60 61 ``` 62 // 以下是查询所有系统事件的应用例子 63 #include "hisysevent_manager.h" 64 #include <iostream> 65 66 namespace OHOS { 67 namespace HiviewDFX { 68 // 实现查询回调的接口 69 void HiSysEventToolQuery::OnQuery(const ::std::vector<std::string>& sysEvent, 70 const ::std::vector<int64_t>& seq) 71 { 72 for_each(sysEvent.cbegin(), sysEvent.cend(), [](const std::string &tmp) { 73 std::cout << tmp << std::endl; 74 }); 75 } 76 77 void HiSysEventToolQuery::OnComplete(int32_t reason, int32_t total) 78 { 79 return; 80 } 81 } // namespace HiviewDFX 82 } // namespace OHOS 83 84 // 调用查询接口获取HiSysEvent事件 85 std::shared_ptr<HiSysEventToolQuery> queryCallBack = nullptr; 86 try { 87 queryCallBack = std::make_shared<HiSysEventToolQuery>(); 88 } catch (...) { 89 // 智能指针获取失败处理 90 } 91 if (queryCallBack != nullptr) { 92 struct QueryArg args(clientCmdArg.beginTime, clientCmdArg.endTime, clientCmdArg.maxEvents); 93 std::vector<QueryRule> rules; 94 HiSysEventManager::QueryHiSysEvent(args, rules, queryCallBack); 95 } 96 ``` 97 982. 编译设置: 99 100 在BUILD.gn编译文件中,需要添加依赖hisysevent\_native部件的libhisyseventmanager库。 101 102 ``` 103 external_deps = [ "hisysevent_native:libhisyseventmanager", ] 104 ``` 105 106 107