HiSysEvent查询指导

概述

HiSysEvent提供了查询接口,支持开发者设置条件查询HiSysEvent事件,例如功耗部件可以通过该接口获取所需的系统事件进行业务分析。

开发指导

接口说明

表 1 HiSysEvent查询接口

接口名称 描述
bool HiSysEventManager::QueryHiSysEvent(struct QueryArg& queryArg, std::vector<QueryRule>& queryRules, std::shared_ptr<HiSysEventQueryCallBack> queryCallBack) 接口功能:
  支持设置查询时间段,事件领域,事件名称等,查询满足条件的HiSysEvent事件。

输入参数:
  • queryArg:查询参数。
  • queryRules:事件过滤规则。
  • queryCallBack:查询接口回调对象。
返回值:
  • true:查询成功。
  • false:查询失败。

表 2 QueryArg查询参数对象

属性名称 描述
beginTime long long int类型,用于指定查询事件的开始时间。
endTime long long int类型,用于指定查询事件的结束时间。
maxEvents int类型,用于指定查询返回事件查询的最多条数。

表 3 QueryRule查询规则对象

接口名称 描述
QueryRule(const std::string& domain, const std::vector<std::string>& eventList) 接口功能:查询规则构造函数,创建查询规则对象。

输入参数:
  • domain:string类型,用来标识查询规则对象的事件所属领域,如果传入的是空字符串,则默认事件领域字段匹配成功。
  • eventList:std::vector<std::string>类型,事件名称的列表,如果传入的是空字符串,则默认事件名称字段匹配成功。

表 4 HiSysEventQueryCallBack查询回调对象

接口名称 描述
void HiSysEventQueryCallBack::OnQuery(const ::std::vector<std::string>& sysEvent, const ::std::vector<int64_t>& seq) 接口功能:订阅事件查询中的回调。

输入参数:
  • sysEvent:返回事件集合。
  • seq:事件序列集合。
返回值:
  无。
void HiSysEventQueryCallBack::OnComplete(int32_t reason, int32_t total) 接口功能:订阅事件查询完成的回调。

输入参数:
  • reason:查询结束返回原因,目前默认是0。
  • total:本次查询总共返回的事件总数量。
返回值:
  无。

开发实例

C++接口实例。

  1. 源代码开发:

    • 引入对应的头文件:

      hisysevent_manager.h

    • 实现对应的查询回调接口:

      void HiSysEventQueryCallBack::OnQuery(const ::std::vector<std::string>& sysEvent, const ::std::vector<int64_t>& seq)

      void HiSysEventQueryCallBack::OnComplete(int32_t reason, int32_t total)

    • 在相应的业务逻辑里面调用查询接口:

      HiSysEventManager::QueryHiSysEvent(struct QueryArg& queryArg, std::vector<QueryRule>& queryRules, std::shared_ptr<HiSysEventQueryCallBack> queryCallBack)

    // 以下是查询所有系统事件的应用例子
    #include "hisysevent_manager.h"
    #include <iostream>
    
    namespace OHOS {
    namespace HiviewDFX {
    // 实现查询回调的接口
    void HiSysEventToolQuery::OnQuery(const ::std::vector<std::string>& sysEvent,
        const ::std::vector<int64_t>& seq)
    {
        for_each(sysEvent.cbegin(), sysEvent.cend(), [](const std::string &tmp) {
            std::cout << tmp << std::endl;
        });
    }
    
    void HiSysEventToolQuery::OnComplete(int32_t reason, int32_t total)
    {
        return;
    }
    } // namespace HiviewDFX
    } // namespace OHOS
    
    // 调用查询接口获取HiSysEvent事件
    std::shared_ptr<HiSysEventToolQuery> queryCallBack = nullptr;
    try {
        queryCallBack = std::make_shared<HiSysEventToolQuery>();
    } catch (...) {
        // 智能指针获取失败处理
    }
    if (queryCallBack != nullptr) {
        struct QueryArg args(clientCmdArg.beginTime, clientCmdArg.endTime, clientCmdArg.maxEvents);
        std::vector<QueryRule> rules;
        HiSysEventManager::QueryHiSysEvent(args, rules, queryCallBack);
    }
    
  2. 编译设置:

    在BUILD.gn编译文件中,需要添加依赖hisysevent_native部件的libhisyseventmanager库。

    external_deps = [ "hisysevent_native:libhisyseventmanager",  ]