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