• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "hisysevent_base_manager.h"
17 
18 #include "hilog/log.h"
19 #include "hisysevent_delegate.h"
20 #include "ret_code.h"
21 
22 #undef LOG_DOMAIN
23 #define LOG_DOMAIN 0xD002D08
24 
25 #undef LOG_TAG
26 #define LOG_TAG "HISYSEVENT_BASE_MANAGER"
27 
28 namespace OHOS {
29 namespace HiviewDFX {
AddListener(std::shared_ptr<HiSysEventBaseListener> listener,std::vector<ListenerRule> & rules)30 int32_t HiSysEventBaseManager::AddListener(std::shared_ptr<HiSysEventBaseListener> listener,
31     std::vector<ListenerRule>& rules)
32 {
33     if (listener == nullptr) {
34         HILOG_WARN(LOG_CORE, "no need to add a listener which is null.");
35         return ERR_LISTENER_NOT_EXIST;
36     }
37     if (listener->listenerProxy == nullptr) {
38         listener->listenerProxy = new HiSysEventDelegate();
39     }
40     return listener->listenerProxy->AddListener(listener, rules);
41 }
42 
RemoveListener(std::shared_ptr<HiSysEventBaseListener> listener)43 int32_t HiSysEventBaseManager::RemoveListener(std::shared_ptr<HiSysEventBaseListener> listener)
44 {
45     if (listener == nullptr || listener->listenerProxy == nullptr) {
46         HILOG_WARN(LOG_CORE, "no need to remove a base listener which has not been added.");
47         return ERR_LISTENER_NOT_EXIST;
48     }
49     auto ret = listener->listenerProxy->RemoveListener(listener);
50     delete listener->listenerProxy;
51     listener->listenerProxy = nullptr;
52     return ret;
53 }
54 
Query(struct QueryArg & arg,std::vector<QueryRule> & rules,std::shared_ptr<HiSysEventBaseQueryCallback> callback)55 int32_t HiSysEventBaseManager::Query(struct QueryArg& arg, std::vector<QueryRule>& rules,
56     std::shared_ptr<HiSysEventBaseQueryCallback> callback)
57 {
58     auto proxy = std::make_unique<HiSysEventDelegate>();
59     if (proxy != nullptr) {
60         return proxy->Query(arg, rules, callback);
61     }
62     return ERR_LISTENER_NOT_EXIST;
63 }
64 
Export(struct QueryArg & arg,std::vector<QueryRule> & rules)65 int64_t HiSysEventBaseManager::Export(struct QueryArg& arg, std::vector<QueryRule>& rules)
66 {
67     auto proxy = std::make_unique<HiSysEventDelegate>();
68     if (proxy != nullptr) {
69         return proxy->Export(arg, rules);
70     }
71     return ERR_LISTENER_NOT_EXIST;
72 }
73 
Subscribe(std::vector<QueryRule> & rules)74 int64_t HiSysEventBaseManager::Subscribe(std::vector<QueryRule>& rules)
75 {
76     auto proxy = std::make_unique<HiSysEventDelegate>();
77     if (proxy != nullptr) {
78         return proxy->Subscribe(rules);
79     }
80     return ERR_LISTENER_NOT_EXIST;
81 }
82 
Unsubscribe()83 int32_t HiSysEventBaseManager::Unsubscribe()
84 {
85     auto proxy = std::make_unique<HiSysEventDelegate>();
86     if (proxy != nullptr) {
87         return proxy->Unsubscribe();
88     }
89     return ERR_LISTENER_NOT_EXIST;
90 }
91 
92 } // namespace HiviewDFX
93 } // namespace OHOS
94