• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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 #ifndef OHOS_HIVIEWDFX_EVENT_PUBLISH_H
17 #define OHOS_HIVIEWDFX_EVENT_PUBLISH_H
18 
19 #include <mutex>
20 #include <string>
21 #include <thread>
22 
23 #include "json/json.h"
24 #include "hisysevent.h"
25 #include "singleton.h"
26 
27 namespace OHOS {
28 namespace HiviewDFX {
29 namespace HiAppEvent {
30 const std::string DOMAIN_OS = "OS";
31 const std::string EVENT_APP_CRASH = "APP_CRASH";
32 const std::string EVENT_APP_FREEZE = "APP_FREEZE";
33 const std::string EVENT_APP_LAUNCH = "APP_LAUNCH";
34 const std::string EVENT_SCROLL_JANK = "SCROLL_JANK";
35 const std::string EVENT_CPU_USAGE_HIGH = "CPU_USAGE_HIGH";
36 const std::string EVENT_BATTERY_USAGE = "BATTERY_USAGE";
37 const std::string EVENT_RESOURCE_OVERLIMIT = "RESOURCE_OVERLIMIT";
38 const std::string EVENT_ADDRESS_SANITIZER = "ADDRESS_SANITIZER";
39 const std::string EVENT_MAIN_THREAD_JANK = "MAIN_THREAD_JANK";
40 const std::string EVENT_APP_START = "APP_START";
41 } // namespace HiAppEvent
42 class EventPublish : public OHOS::DelayedRefSingleton<EventPublish> {
43 public:
EventPublish()44     EventPublish() {};
~EventPublish()45     ~EventPublish() {};
46 
47 public:
48     void PushEvent(int32_t uid, const std::string& eventName, HiSysEvent::EventType eventType,
49         const std::string& paramJson);
50 
51 private:
52     void StartSendingThread();
53     void SendEventToSandBox();
54     void StartOverLimitThread(int32_t uid, const std::string& eventName,
55                               const std::string& bundleName, Json::Value& eventJson);
56     void SendOverLimitEventToSandBox(int32_t uid, const std::string& eventName,
57                                      const std::string& bundleName, Json::Value eventJson);
58 
59 private:
60     std::mutex mutex_;
61     std::unique_ptr<std::thread> sendingThread_ = nullptr;
62     std::unique_ptr<std::thread> sendingOverlimitThread_ = nullptr;
63 };
64 } // namespace HiviewDFX
65 } // namespace OHOS
66 
67 #endif // OHOS_HIVIEWDFX_EVENT_PUBLISH_H