1020a203aSopenharmony_ci/* 2020a203aSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3020a203aSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4020a203aSopenharmony_ci * you may not use this file except in compliance with the License. 5020a203aSopenharmony_ci * You may obtain a copy of the License at 6020a203aSopenharmony_ci * 7020a203aSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8020a203aSopenharmony_ci * 9020a203aSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10020a203aSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11020a203aSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12020a203aSopenharmony_ci * See the License for the specific language governing permissions and 13020a203aSopenharmony_ci * limitations under the License. 14020a203aSopenharmony_ci */ 15020a203aSopenharmony_ci 16020a203aSopenharmony_ci#ifndef FREEZE_JSON_GENERATOR_H 17020a203aSopenharmony_ci#define FREEZE_JSON_GENERATOR_H 18020a203aSopenharmony_ci 19020a203aSopenharmony_ci#include <string> 20020a203aSopenharmony_ci 21020a203aSopenharmony_cinamespace OHOS { 22020a203aSopenharmony_cinamespace HiviewDFX { 23020a203aSopenharmony_ci 24020a203aSopenharmony_ciclass FreezeJsonException { 25020a203aSopenharmony_cipublic: 26020a203aSopenharmony_ci class Builder { 27020a203aSopenharmony_ci public: 28020a203aSopenharmony_ci Builder() {}; 29020a203aSopenharmony_ci ~Builder() {}; 30020a203aSopenharmony_ci Builder& InitName(const std::string& name); 31020a203aSopenharmony_ci Builder& InitMessage(const std::string& message); 32020a203aSopenharmony_ci FreezeJsonException Build() const; 33020a203aSopenharmony_ci 34020a203aSopenharmony_ci private: 35020a203aSopenharmony_ci std::string name_ = ""; 36020a203aSopenharmony_ci std::string message_ = ""; 37020a203aSopenharmony_ci friend class FreezeJsonException; 38020a203aSopenharmony_ci }; 39020a203aSopenharmony_ci 40020a203aSopenharmony_ci explicit FreezeJsonException(const FreezeJsonException::Builder& builder); 41020a203aSopenharmony_ci ~FreezeJsonException() {}; 42020a203aSopenharmony_ci std::string JsonStr() const; 43020a203aSopenharmony_ci 44020a203aSopenharmony_ciprivate: 45020a203aSopenharmony_ci static constexpr const char* const jsonExceptionName = "name"; 46020a203aSopenharmony_ci static constexpr const char* const jsonExceptionMessage = "message"; 47020a203aSopenharmony_ci 48020a203aSopenharmony_ci std::string name_; 49020a203aSopenharmony_ci std::string message_; 50020a203aSopenharmony_ci}; 51020a203aSopenharmony_ci 52020a203aSopenharmony_ciclass FreezeJsonMemory { 53020a203aSopenharmony_cipublic: 54020a203aSopenharmony_ci class Builder { 55020a203aSopenharmony_ci public: 56020a203aSopenharmony_ci Builder() {}; 57020a203aSopenharmony_ci ~Builder() {}; 58020a203aSopenharmony_ci Builder& InitRss(unsigned long long rss); 59020a203aSopenharmony_ci Builder& InitVss(unsigned long long vss); 60020a203aSopenharmony_ci Builder& InitPss(unsigned long long pss); 61020a203aSopenharmony_ci Builder& InitSysFreeMem(unsigned long long sysFreeMem); 62020a203aSopenharmony_ci Builder& InitSysAvailMem(unsigned long long sysAvailMem); 63020a203aSopenharmony_ci Builder& InitSysTotalMem(unsigned long long sysTotalMem); 64020a203aSopenharmony_ci FreezeJsonMemory Build() const; 65020a203aSopenharmony_ci 66020a203aSopenharmony_ci private: 67020a203aSopenharmony_ci unsigned long long rss_ = 0; 68020a203aSopenharmony_ci unsigned long long vss_ = 0; 69020a203aSopenharmony_ci unsigned long long pss_ = 0; 70020a203aSopenharmony_ci unsigned long long sysFreeMem_ = 0; 71020a203aSopenharmony_ci unsigned long long sysAvailMem_ = 0; 72020a203aSopenharmony_ci unsigned long long sysTotalMem_ = 0; 73020a203aSopenharmony_ci friend class FreezeJsonMemory; 74020a203aSopenharmony_ci }; 75020a203aSopenharmony_ci 76020a203aSopenharmony_ci explicit FreezeJsonMemory(const FreezeJsonMemory::Builder& builder); 77020a203aSopenharmony_ci ~FreezeJsonMemory() {}; 78020a203aSopenharmony_ci std::string JsonStr() const; 79020a203aSopenharmony_ci 80020a203aSopenharmony_ciprivate: 81020a203aSopenharmony_ci static constexpr const char* const jsonMemoryRss = "rss"; 82020a203aSopenharmony_ci static constexpr const char* const jsonMemoryVss = "vss"; 83020a203aSopenharmony_ci static constexpr const char* const jsonMemoryPss = "pss"; 84020a203aSopenharmony_ci static constexpr const char* const jsonMemorySysFreeMem = "sys_free_mem"; 85020a203aSopenharmony_ci static constexpr const char* const jsonMemorySysAvailMem = "sys_avail_mem"; 86020a203aSopenharmony_ci static constexpr const char* const jsonMemorySysTotalMem = "sys_total_mem"; 87020a203aSopenharmony_ci unsigned long long rss_; 88020a203aSopenharmony_ci unsigned long long vss_; 89020a203aSopenharmony_ci unsigned long long pss_; 90020a203aSopenharmony_ci unsigned long long sysFreeMem_; 91020a203aSopenharmony_ci unsigned long long sysAvailMem_; 92020a203aSopenharmony_ci unsigned long long sysTotalMem_; 93020a203aSopenharmony_ci}; 94020a203aSopenharmony_ci 95020a203aSopenharmony_ciclass FreezeJsonParams { 96020a203aSopenharmony_cipublic: 97020a203aSopenharmony_ci class Builder { 98020a203aSopenharmony_ci public: 99020a203aSopenharmony_ci Builder() {}; 100020a203aSopenharmony_ci ~Builder() {}; 101020a203aSopenharmony_ci Builder& InitTime(unsigned long long time); 102020a203aSopenharmony_ci Builder& InitUuid(const std::string& uuid); 103020a203aSopenharmony_ci Builder& InitFreezeType(const std::string& freezeType); 104020a203aSopenharmony_ci Builder& InitForeground(bool foreground); 105020a203aSopenharmony_ci Builder& InitBundleVersion(const std::string& bundleVersion); 106020a203aSopenharmony_ci Builder& InitBundleName(const std::string& bundleName); 107020a203aSopenharmony_ci Builder& InitProcessName(const std::string& processName); 108020a203aSopenharmony_ci Builder& InitExternalLog(const std::string& externalLog); 109020a203aSopenharmony_ci Builder& InitPid(long pid); 110020a203aSopenharmony_ci Builder& InitUid(long uid); 111020a203aSopenharmony_ci Builder& InitAppRunningUniqueId(const std::string& appRunningUniqueId); 112020a203aSopenharmony_ci Builder& InitException(const std::string& exception); 113020a203aSopenharmony_ci Builder& InitHilog(const std::string& hilog); 114020a203aSopenharmony_ci Builder& InitEventHandler(const std::string& eventHandler); 115020a203aSopenharmony_ci Builder& InitEventHandlerSize3s(const std::string& eventHandlerSize3s); 116020a203aSopenharmony_ci Builder& InitEventHandlerSize6s(const std::string& eventHandlerSize6s); 117020a203aSopenharmony_ci Builder& InitPeerBinder(const std::string& peerBinder); 118020a203aSopenharmony_ci Builder& InitThreads(const std::string& threads); 119020a203aSopenharmony_ci Builder& InitMemory(const std::string& memory); 120020a203aSopenharmony_ci FreezeJsonParams Build() const; 121020a203aSopenharmony_ci 122020a203aSopenharmony_ci private: 123020a203aSopenharmony_ci unsigned long long time_ = 0; 124020a203aSopenharmony_ci std::string uuid_ = ""; 125020a203aSopenharmony_ci std::string freezeType_ = ""; 126020a203aSopenharmony_ci bool foreground_ = false; 127020a203aSopenharmony_ci std::string bundleVersion_ = ""; 128020a203aSopenharmony_ci std::string bundleName_ = ""; 129020a203aSopenharmony_ci std::string processName_ = ""; 130020a203aSopenharmony_ci std::string externalLog_ = "[]"; 131020a203aSopenharmony_ci long pid_ = 0; 132020a203aSopenharmony_ci long uid_ = 0; 133020a203aSopenharmony_ci std::string appRunningUniqueId_ = ""; 134020a203aSopenharmony_ci std::string exception_ = "{}"; 135020a203aSopenharmony_ci std::string hilog_ = "[]"; 136020a203aSopenharmony_ci std::string eventHandler_ = "[]"; 137020a203aSopenharmony_ci std::string eventHandlerSize3s_ = ""; 138020a203aSopenharmony_ci std::string eventHandlerSize6s_ = ""; 139020a203aSopenharmony_ci std::string peerBinder_ = "[]"; 140020a203aSopenharmony_ci std::string threads_ = "[]"; 141020a203aSopenharmony_ci std::string memory_ = "{}"; 142020a203aSopenharmony_ci friend class FreezeJsonParams; 143020a203aSopenharmony_ci }; 144020a203aSopenharmony_ci 145020a203aSopenharmony_ci explicit FreezeJsonParams(const FreezeJsonParams::Builder& builder); 146020a203aSopenharmony_ci ~FreezeJsonParams() {}; 147020a203aSopenharmony_ci std::string JsonStr() const; 148020a203aSopenharmony_ci 149020a203aSopenharmony_ciprivate: 150020a203aSopenharmony_ci static constexpr const char* const jsonParamsTime = "time"; 151020a203aSopenharmony_ci static constexpr const char* const jsonParamsUuid = "uuid"; 152020a203aSopenharmony_ci static constexpr const char* const jsonParamsFreezeType = "freeze_type"; 153020a203aSopenharmony_ci static constexpr const char* const jsonParamsForeground = "foreground"; 154020a203aSopenharmony_ci static constexpr const char* const jsonParamsBundleVersion = "bundle_version"; 155020a203aSopenharmony_ci static constexpr const char* const jsonParamsBundleName = "bundle_name"; 156020a203aSopenharmony_ci static constexpr const char* const jsonParamsProcessName = "process_name"; 157020a203aSopenharmony_ci static constexpr const char* const jsonParamsExternalLog = "external_log"; 158020a203aSopenharmony_ci static constexpr const char* const jsonParamsPid = "pid"; 159020a203aSopenharmony_ci static constexpr const char* const jsonParamsUid = "uid"; 160020a203aSopenharmony_ci static constexpr const char* const jsonParamsAppRunningUniqueId = "app_running_unique_id"; 161020a203aSopenharmony_ci static constexpr const char* const jsonParamsException = "exception"; 162020a203aSopenharmony_ci static constexpr const char* const jsonParamsHilog = "hilog"; 163020a203aSopenharmony_ci static constexpr const char* const jsonParamsEventHandler = "event_handler"; 164020a203aSopenharmony_ci static constexpr const char* const jsonParamsEventHandlerSize3s = "event_handler_size_3s"; 165020a203aSopenharmony_ci static constexpr const char* const jsonParamsEventHandlerSize6s = "event_handler_size_6s"; 166020a203aSopenharmony_ci static constexpr const char* const jsonParamsPeerBinder = "peer_binder"; 167020a203aSopenharmony_ci static constexpr const char* const jsonParamsThreads = "threads"; 168020a203aSopenharmony_ci static constexpr const char* const jsonParamsMemory = "memory"; 169020a203aSopenharmony_ci 170020a203aSopenharmony_ci unsigned long long time_; 171020a203aSopenharmony_ci std::string uuid_; 172020a203aSopenharmony_ci std::string freezeType_; 173020a203aSopenharmony_ci bool foreground_; 174020a203aSopenharmony_ci std::string bundleVersion_; 175020a203aSopenharmony_ci std::string bundleName_; 176020a203aSopenharmony_ci std::string processName_; 177020a203aSopenharmony_ci std::string externalLog_ = ""; 178020a203aSopenharmony_ci long pid_ = 0; 179020a203aSopenharmony_ci long uid_ = 0; 180020a203aSopenharmony_ci std::string appRunningUniqueId_ = ""; 181020a203aSopenharmony_ci std::string exception_; 182020a203aSopenharmony_ci std::string hilog_; 183020a203aSopenharmony_ci std::string eventHandler_; 184020a203aSopenharmony_ci std::string eventHandlerSize3s_; 185020a203aSopenharmony_ci std::string eventHandlerSize6s_; 186020a203aSopenharmony_ci std::string peerBinder_; 187020a203aSopenharmony_ci std::string threads_; 188020a203aSopenharmony_ci std::string memory_; 189020a203aSopenharmony_ci}; 190020a203aSopenharmony_ci 191020a203aSopenharmony_ci} // namespace HiviewDFX 192020a203aSopenharmony_ci} // namespace OHOS 193020a203aSopenharmony_ci#endif