• 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 FREEZE_JSON_GENERATOR_H
17 #define FREEZE_JSON_GENERATOR_H
18 
19 #include <string>
20 
21 namespace OHOS {
22 namespace HiviewDFX {
23 
24 class FreezeJsonException {
25 public:
26     class Builder {
27     public:
Builder()28         Builder() {};
~Builder()29         ~Builder() {};
30         Builder& InitName(const std::string& name);
31         Builder& InitMessage(const std::string& message);
32         FreezeJsonException Build() const;
33 
34     private:
35         std::string name_ = "";
36         std::string message_ = "";
37         friend class FreezeJsonException;
38     };
39 
40     explicit FreezeJsonException(const FreezeJsonException::Builder& builder);
~FreezeJsonException()41     ~FreezeJsonException() {};
42     std::string JsonStr() const;
43 
44 private:
45     static constexpr const char* const jsonExceptionName = "name";
46     static constexpr const char* const jsonExceptionMessage = "message";
47 
48     std::string name_;
49     std::string message_;
50 };
51 
52 class FreezeJsonMemory {
53 public:
54     class Builder {
55     public:
Builder()56         Builder() {};
~Builder()57         ~Builder() {};
58         Builder& InitRss(uint64_t rss);
59         Builder& InitVss(uint64_t vss);
60         Builder& InitPss(uint64_t pss);
61         Builder& InitSysFreeMem(uint64_t sysFreeMem);
62         Builder& InitSysAvailMem(uint64_t sysAvailMem);
63         Builder& InitSysTotalMem(uint64_t sysTotalMem);
64         FreezeJsonMemory Build() const;
65 
66     private:
67         uint64_t rss_ = 0;
68         uint64_t vss_ = 0;
69         uint64_t pss_ = 0;
70         uint64_t sysFreeMem_ = 0;
71         uint64_t sysAvailMem_ = 0;
72         uint64_t sysTotalMem_ = 0;
73         friend class FreezeJsonMemory;
74     };
75 
76     explicit FreezeJsonMemory(const FreezeJsonMemory::Builder& builder);
~FreezeJsonMemory()77     ~FreezeJsonMemory() {};
78     std::string JsonStr() const;
79 
80 private:
81     static constexpr const char* const jsonMemoryRss = "rss";
82     static constexpr const char* const jsonMemoryVss = "vss";
83     static constexpr const char* const jsonMemoryPss = "pss";
84     static constexpr const char* const jsonMemorySysFreeMem = "sys_free_mem";
85     static constexpr const char* const jsonMemorySysAvailMem = "sys_avail_mem";
86     static constexpr const char* const jsonMemorySysTotalMem = "sys_total_mem";
87     uint64_t rss_;
88     uint64_t vss_;
89     uint64_t pss_;
90     uint64_t sysFreeMem_;
91     uint64_t sysAvailMem_;
92     uint64_t sysTotalMem_;
93 };
94 
95 class FreezeJsonParams {
96 public:
97     class Builder {
98     public:
Builder()99         Builder() {};
~Builder()100         ~Builder() {};
101         Builder& InitTime(unsigned long long time);
102         Builder& InitUuid(const std::string& uuid);
103         Builder& InitFreezeType(const std::string& freezeType);
104         Builder& InitForeground(bool foreground);
105         Builder& InitBundleVersion(const std::string& bundleVersion);
106         Builder& InitBundleName(const std::string& bundleName);
107         Builder& InitProcessName(const std::string& processName);
108         Builder& InitExternalLog(const std::string& externalLog);
109         Builder& InitPid(long pid);
110         Builder& InitUid(long uid);
111         Builder& InitAppRunningUniqueId(const std::string& appRunningUniqueId);
112         Builder& InitException(const std::string& exception);
113         Builder& InitHilog(const std::string& hilog);
114         Builder& InitEventHandler(const std::string& eventHandler);
115         Builder& InitEventHandlerSize3s(const std::string& eventHandlerSize3s);
116         Builder& InitEventHandlerSize6s(const std::string& eventHandlerSize6s);
117         Builder& InitPeerBinder(const std::string& peerBinder);
118         Builder& InitThreads(const std::string& threads);
119         Builder& InitMemory(const std::string& memory);
120         FreezeJsonParams Build() const;
121 
122     private:
123         unsigned long long time_ = 0;
124         std::string uuid_ = "";
125         std::string freezeType_ = "";
126         bool foreground_ = false;
127         std::string bundleVersion_ = "";
128         std::string bundleName_ = "";
129         std::string processName_ = "";
130         std::string externalLog_ = "[]";
131         long pid_ = 0;
132         long uid_ = 0;
133         std::string appRunningUniqueId_ = "";
134         std::string exception_ = "{}";
135         std::string hilog_ = "[]";
136         std::string eventHandler_ = "[]";
137         std::string eventHandlerSize3s_ = "";
138         std::string eventHandlerSize6s_ = "";
139         std::string peerBinder_ = "[]";
140         std::string threads_ = "[]";
141         std::string memory_ = "{}";
142         friend class FreezeJsonParams;
143     };
144 
145     explicit FreezeJsonParams(const FreezeJsonParams::Builder& builder);
~FreezeJsonParams()146     ~FreezeJsonParams() {};
147     std::string JsonStr() const;
148 
149 private:
150     static constexpr const char* const jsonParamsTime = "time";
151     static constexpr const char* const jsonParamsUuid = "uuid";
152     static constexpr const char* const jsonParamsFreezeType = "freeze_type";
153     static constexpr const char* const jsonParamsForeground = "foreground";
154     static constexpr const char* const jsonParamsBundleVersion = "bundle_version";
155     static constexpr const char* const jsonParamsBundleName = "bundle_name";
156     static constexpr const char* const jsonParamsProcessName = "process_name";
157     static constexpr const char* const jsonParamsExternalLog = "external_log";
158     static constexpr const char* const jsonParamsPid = "pid";
159     static constexpr const char* const jsonParamsUid = "uid";
160     static constexpr const char* const jsonParamsAppRunningUniqueId = "app_running_unique_id";
161     static constexpr const char* const jsonParamsException = "exception";
162     static constexpr const char* const jsonParamsHilog = "hilog";
163     static constexpr const char* const jsonParamsEventHandler = "event_handler";
164     static constexpr const char* const jsonParamsEventHandlerSize3s = "event_handler_size_3s";
165     static constexpr const char* const jsonParamsEventHandlerSize6s = "event_handler_size_6s";
166     static constexpr const char* const jsonParamsPeerBinder = "peer_binder";
167     static constexpr const char* const jsonParamsThreads = "threads";
168     static constexpr const char* const jsonParamsMemory = "memory";
169 
170     unsigned long long time_;
171     std::string uuid_;
172     std::string freezeType_;
173     bool foreground_;
174     std::string bundleVersion_;
175     std::string bundleName_;
176     std::string processName_;
177     std::string externalLog_ = "";
178     long pid_ = 0;
179     long uid_ = 0;
180     std::string appRunningUniqueId_ = "";
181     std::string exception_;
182     std::string hilog_;
183     std::string eventHandler_;
184     std::string eventHandlerSize3s_;
185     std::string eventHandlerSize6s_;
186     std::string peerBinder_;
187     std::string threads_;
188     std::string memory_;
189 };
190 } // namespace HiviewDFX
191 } // namespace OHOS
192 #endif