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 #include "freeze_json_generator.h"
17 #include "freeze_json_util.h"
18
19 #include <map>
20 #include <list>
21 #include <string>
22
23 namespace OHOS {
24 namespace HiviewDFX {
25
FreezeJsonException(const FreezeJsonException::Builder & builder)26 FreezeJsonException::FreezeJsonException(const FreezeJsonException::Builder& builder)
27 : name_(builder.name_),
28 message_(builder.message_)
29 {
30 }
31
InitName(const std::string & name)32 FreezeJsonException::Builder& FreezeJsonException::Builder::InitName(const std::string& name)
33 {
34 name_ = name;
35 return *this;
36 }
37
InitMessage(const std::string & message)38 FreezeJsonException::Builder& FreezeJsonException::Builder::InitMessage(const std::string& message)
39 {
40 message_ = message;
41 return *this;
42 }
43
Build() const44 FreezeJsonException FreezeJsonException::Builder::Build() const
45 {
46 FreezeJsonException freezeJsonException = FreezeJsonException(*this);
47 return freezeJsonException;
48 }
49
JsonStr() const50 std::string FreezeJsonException::JsonStr() const
51 {
52 std::map<std::string, std::string> exceptionMap;
53 exceptionMap[jsonExceptionName] = name_;
54 exceptionMap[jsonExceptionMessage] = message_;
55 return FreezeJsonUtil::GetStrByMap(exceptionMap);
56 }
57
FreezeJsonMemory(const FreezeJsonMemory::Builder & builder)58 FreezeJsonMemory::FreezeJsonMemory(const FreezeJsonMemory::Builder& builder)
59 : rss_(builder.rss_),
60 vss_(builder.vss_),
61 pss_(builder.pss_),
62 sysFreeMem_(builder.sysFreeMem_),
63 sysAvailMem_(builder.sysAvailMem_),
64 sysTotalMem_(builder.sysTotalMem_)
65 {
66 }
67
InitRss(unsigned long long rss)68 FreezeJsonMemory::Builder& FreezeJsonMemory::Builder::InitRss(unsigned long long rss)
69 {
70 rss_ = rss;
71 return *this;
72 }
73
InitVss(unsigned long long vss)74 FreezeJsonMemory::Builder& FreezeJsonMemory::Builder::InitVss(unsigned long long vss)
75 {
76 vss_ = vss;
77 return *this;
78 }
79
InitPss(unsigned long long pss)80 FreezeJsonMemory::Builder& FreezeJsonMemory::Builder::InitPss(unsigned long long pss)
81 {
82 pss_ = pss;
83 return *this;
84 }
85
InitSysFreeMem(unsigned long long sysFreeMem)86 FreezeJsonMemory::Builder& FreezeJsonMemory::Builder::InitSysFreeMem(unsigned long long sysFreeMem)
87 {
88 sysFreeMem_ = sysFreeMem;
89 return *this;
90 }
91
InitSysAvailMem(unsigned long long sysAvailMem)92 FreezeJsonMemory::Builder& FreezeJsonMemory::Builder::InitSysAvailMem(unsigned long long sysAvailMem)
93 {
94 sysAvailMem_ = sysAvailMem;
95 return *this;
96 }
97
InitSysTotalMem(unsigned long long sysTotalMem)98 FreezeJsonMemory::Builder& FreezeJsonMemory::Builder::InitSysTotalMem(unsigned long long sysTotalMem)
99 {
100 sysTotalMem_ = sysTotalMem;
101 return *this;
102 }
103
Build() const104 FreezeJsonMemory FreezeJsonMemory::Builder::Build() const
105 {
106 FreezeJsonMemory freezeJsonMemory = FreezeJsonMemory(*this);
107 return freezeJsonMemory;
108 }
109
JsonStr() const110 std::string FreezeJsonMemory::JsonStr() const
111 {
112 std::map<std::string, unsigned long long> memoryMap;
113 memoryMap[jsonMemoryRss] = rss_;
114 memoryMap[jsonMemoryVss] = vss_;
115 memoryMap[jsonMemoryPss] = pss_;
116 memoryMap[jsonMemorySysFreeMem] = sysFreeMem_;
117 memoryMap[jsonMemorySysAvailMem] = sysAvailMem_;
118 memoryMap[jsonMemorySysTotalMem] = sysTotalMem_;
119 return FreezeJsonUtil::GetStrByMap(memoryMap);
120 }
121
FreezeJsonParams(const FreezeJsonParams::Builder & builder)122 FreezeJsonParams::FreezeJsonParams(const FreezeJsonParams::Builder& builder)
123 : time_(builder.time_),
124 uuid_(builder.uuid_),
125 freezeType_(builder.freezeType_),
126 foreground_(builder.foreground_),
127 bundleVersion_(builder.bundleVersion_),
128 bundleName_(builder.bundleName_),
129 processName_(builder.processName_),
130 externalLog_(builder.externalLog_),
131 pid_(builder.pid_),
132 uid_(builder.uid_),
133 appRunningUniqueId_(builder.appRunningUniqueId_),
134 exception_(builder.exception_),
135 hilog_(builder.hilog_),
136 eventHandler_(builder.eventHandler_),
137 eventHandlerSize3s_(builder.eventHandlerSize3s_),
138 eventHandlerSize6s_(builder.eventHandlerSize6s_),
139 peerBinder_(builder.peerBinder_),
140 threads_(builder.threads_),
141 memory_(builder.memory_)
142 {
143 }
144
InitTime(unsigned long long time)145 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitTime(unsigned long long time)
146 {
147 time_ = time;
148 return *this;
149 }
150
InitUuid(const std::string & uuid)151 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitUuid(const std::string& uuid)
152 {
153 uuid_ = uuid;
154 return *this;
155 }
156
InitFreezeType(const std::string & freezeType)157 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitFreezeType(const std::string& freezeType)
158 {
159 freezeType_ = freezeType;
160 return *this;
161 }
162
InitForeground(bool foreground)163 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitForeground(bool foreground)
164 {
165 foreground_ = foreground;
166 return *this;
167 }
168
InitBundleVersion(const std::string & bundleVersion)169 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitBundleVersion(const std::string& bundleVersion)
170 {
171 bundleVersion_ = bundleVersion;
172 return *this;
173 }
174
InitBundleName(const std::string & bundleName)175 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitBundleName(const std::string& bundleName)
176 {
177 bundleName_ = bundleName;
178 return *this;
179 }
180
InitProcessName(const std::string & processName)181 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitProcessName(const std::string& processName)
182 {
183 processName_ = processName;
184 return *this;
185 }
186
InitExternalLog(const std::string & externalLog)187 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitExternalLog(const std::string& externalLog)
188 {
189 externalLog_ = externalLog;
190 return *this;
191 }
192
InitPid(long pid)193 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitPid(long pid)
194 {
195 pid_ = pid;
196 return *this;
197 }
198
InitUid(long uid)199 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitUid(long uid)
200 {
201 uid_ = uid;
202 return *this;
203 }
204
InitAppRunningUniqueId(const std::string & appRunningUniqueId)205 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitAppRunningUniqueId(const std::string& appRunningUniqueId)
206 {
207 appRunningUniqueId_ = appRunningUniqueId;
208 return *this;
209 }
210
InitException(const std::string & exception)211 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitException(const std::string& exception)
212 {
213 exception_ = exception;
214 return *this;
215 }
216
InitHilog(const std::string & hilog)217 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitHilog(const std::string& hilog)
218 {
219 hilog_ = hilog;
220 return *this;
221 }
222
InitEventHandler(const std::string & eventHandler)223 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitEventHandler(const std::string& eventHandler)
224 {
225 eventHandler_ = eventHandler;
226 return *this;
227 }
228
InitEventHandlerSize3s(const std::string & eventHandlerSize3s)229 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitEventHandlerSize3s(const std::string& eventHandlerSize3s)
230 {
231 eventHandlerSize3s_ = eventHandlerSize3s;
232 return *this;
233 }
234
InitEventHandlerSize6s(const std::string & eventHandlerSize6s)235 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitEventHandlerSize6s(const std::string& eventHandlerSize6s)
236 {
237 eventHandlerSize6s_ = eventHandlerSize6s;
238 return *this;
239 }
240
InitPeerBinder(const std::string & peerBinder)241 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitPeerBinder(const std::string& peerBinder)
242 {
243 peerBinder_ = peerBinder;
244 return *this;
245 }
246
InitThreads(const std::string & threads)247 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitThreads(const std::string& threads)
248 {
249 threads_ = threads;
250 return *this;
251 }
252
InitMemory(const std::string & memory)253 FreezeJsonParams::Builder& FreezeJsonParams::Builder::InitMemory(const std::string& memory)
254 {
255 memory_ = memory;
256 return *this;
257 }
258
Build() const259 FreezeJsonParams FreezeJsonParams::Builder::Build() const
260 {
261 FreezeJsonParams freezeJsonParams = FreezeJsonParams(*this);
262 return freezeJsonParams;
263 }
264
JsonStr() const265 std::string FreezeJsonParams::JsonStr() const
266 {
267 std::list<std::string> list;
268 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsTime, time_));
269 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsUuid, uuid_));
270 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsForeground, foreground_));
271 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsBundleVersion, bundleVersion_));
272 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsBundleName, bundleName_));
273 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsProcessName, processName_));
274 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsExternalLog, externalLog_));
275 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsPid, pid_));
276 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsUid, uid_));
277 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsAppRunningUniqueId, appRunningUniqueId_));
278 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsException, exception_));
279 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsHilog, hilog_));
280 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsEventHandler, eventHandler_));
281 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsEventHandlerSize3s, eventHandlerSize3s_));
282 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsEventHandlerSize6s, eventHandlerSize6s_));
283 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsPeerBinder, peerBinder_));
284 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsThreads, threads_));
285 list.push_back(FreezeJsonUtil::GetStrByKeyValue(jsonParamsMemory, memory_));
286 return FreezeJsonUtil::MergeKeyValueList(list);
287 }
288
289 } // namespace HiviewDFX
290 } // namespace OHOS