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