1020a203aSopenharmony_ci/*
2020a203aSopenharmony_ci * Copyright (c) 2021 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_WATCHPOINT_H
17020a203aSopenharmony_ci#define FREEZE_WATCHPOINT_H
18020a203aSopenharmony_ci
19020a203aSopenharmony_ci#include <cstdint>
20020a203aSopenharmony_ci#include <string>
21020a203aSopenharmony_ci
22020a203aSopenharmony_cinamespace OHOS {
23020a203aSopenharmony_cinamespace HiviewDFX {
24020a203aSopenharmony_ciclass WatchPoint {
25020a203aSopenharmony_cipublic:
26020a203aSopenharmony_ci    class Builder {
27020a203aSopenharmony_ci    public:
28020a203aSopenharmony_ci        Builder();
29020a203aSopenharmony_ci        ~Builder();
30020a203aSopenharmony_ci        Builder& InitSeq(long seq);
31020a203aSopenharmony_ci        Builder& InitTimestamp(unsigned long long timestamp);
32020a203aSopenharmony_ci        Builder& InitPid(long pid);
33020a203aSopenharmony_ci        Builder& InitTid(long tid);
34020a203aSopenharmony_ci        Builder& InitUid(long uid);
35020a203aSopenharmony_ci        Builder& InitDomain(const std::string& domain);
36020a203aSopenharmony_ci        Builder& InitStringId(const std::string& stringId);
37020a203aSopenharmony_ci        Builder& InitMsg(const std::string& msg);
38020a203aSopenharmony_ci        Builder& InitPackageName(const std::string& packageName);
39020a203aSopenharmony_ci        Builder& InitProcessName(const std::string& processName);
40020a203aSopenharmony_ci        Builder& InitForeGround(const std::string& foreGround);
41020a203aSopenharmony_ci        Builder& InitLogPath(const std::string& logPath);
42020a203aSopenharmony_ci        Builder& InitHitraceTime(const std::string& hitraceTime);
43020a203aSopenharmony_ci        Builder& InitSysrqTime(const std::string& sysrqTime);
44020a203aSopenharmony_ci        WatchPoint Build() const;
45020a203aSopenharmony_ci
46020a203aSopenharmony_ci    private:
47020a203aSopenharmony_ci        long seq_;
48020a203aSopenharmony_ci        unsigned long long timestamp_;
49020a203aSopenharmony_ci        long pid_;
50020a203aSopenharmony_ci        long uid_;
51020a203aSopenharmony_ci        long tid_;
52020a203aSopenharmony_ci        std::string domain_;
53020a203aSopenharmony_ci        std::string stringId_;
54020a203aSopenharmony_ci        std::string msg_;
55020a203aSopenharmony_ci        std::string packageName_;
56020a203aSopenharmony_ci        std::string processName_;
57020a203aSopenharmony_ci        std::string foreGround_;
58020a203aSopenharmony_ci        std::string logPath_;
59020a203aSopenharmony_ci        std::string hitraceTime_;
60020a203aSopenharmony_ci        std::string sysrqTime_;
61020a203aSopenharmony_ci        friend class WatchPoint;
62020a203aSopenharmony_ci    };
63020a203aSopenharmony_ci
64020a203aSopenharmony_ci    WatchPoint();
65020a203aSopenharmony_ci    explicit WatchPoint(const WatchPoint::Builder& builder);
66020a203aSopenharmony_ci    ~WatchPoint() {};
67020a203aSopenharmony_ci
68020a203aSopenharmony_ci    long GetSeq() const;
69020a203aSopenharmony_ci    unsigned long long GetTimestamp() const;
70020a203aSopenharmony_ci    long GetPid() const;
71020a203aSopenharmony_ci    long GetTid() const;
72020a203aSopenharmony_ci    long GetUid() const;
73020a203aSopenharmony_ci    std::string GetDomain() const;
74020a203aSopenharmony_ci    std::string GetStringId() const;
75020a203aSopenharmony_ci    std::string GetMsg() const;
76020a203aSopenharmony_ci    std::string GetPackageName() const;
77020a203aSopenharmony_ci    std::string GetProcessName() const;
78020a203aSopenharmony_ci    std::string GetForeGround() const;
79020a203aSopenharmony_ci    std::string GetLogPath() const;
80020a203aSopenharmony_ci    std::string GetHitraceTime() const;
81020a203aSopenharmony_ci    std::string GetSysrqTime() const;
82020a203aSopenharmony_ci    void SetLogPath(const std::string& logPath);
83020a203aSopenharmony_ci    void SetSeq(long seq);
84020a203aSopenharmony_ci    bool operator<(const WatchPoint& node) const;
85020a203aSopenharmony_ci    bool operator==(const WatchPoint& node) const;
86020a203aSopenharmony_ci
87020a203aSopenharmony_ciprivate:
88020a203aSopenharmony_ci    long seq_;
89020a203aSopenharmony_ci    unsigned long long timestamp_;
90020a203aSopenharmony_ci    long pid_;
91020a203aSopenharmony_ci    long uid_;
92020a203aSopenharmony_ci    long tid_;
93020a203aSopenharmony_ci    std::string domain_;
94020a203aSopenharmony_ci    std::string stringId_;
95020a203aSopenharmony_ci    std::string msg_;
96020a203aSopenharmony_ci    std::string packageName_;
97020a203aSopenharmony_ci    std::string processName_;
98020a203aSopenharmony_ci    std::string foreGround_;
99020a203aSopenharmony_ci    std::string logPath_;
100020a203aSopenharmony_ci    std::string hitraceTime_;
101020a203aSopenharmony_ci    std::string sysrqTime_;
102020a203aSopenharmony_ci};
103020a203aSopenharmony_ci} // namespace HiviewDFX
104020a203aSopenharmony_ci} // namespace OHOS
105020a203aSopenharmony_ci#endif
106