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