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#include "watch_point.h"
17020a203aSopenharmony_ci
18020a203aSopenharmony_ci#include <iostream>
19020a203aSopenharmony_ci
20020a203aSopenharmony_cinamespace OHOS {
21020a203aSopenharmony_cinamespace HiviewDFX {
22020a203aSopenharmony_ciWatchPoint::WatchPoint()
23020a203aSopenharmony_ci    : seq_(0), timestamp_(0), pid_(0), uid_(0), tid_(0), domain_(""), stringId_(""), msg_("")
24020a203aSopenharmony_ci{
25020a203aSopenharmony_ci}
26020a203aSopenharmony_ci
27020a203aSopenharmony_ciWatchPoint::WatchPoint(const WatchPoint::Builder& builder)
28020a203aSopenharmony_ci    : seq_(builder.seq_),
29020a203aSopenharmony_ci    timestamp_(builder.timestamp_),
30020a203aSopenharmony_ci    pid_(builder.pid_),
31020a203aSopenharmony_ci    uid_(builder.uid_),
32020a203aSopenharmony_ci    tid_(builder.tid_),
33020a203aSopenharmony_ci    domain_(builder.domain_),
34020a203aSopenharmony_ci    stringId_(builder.stringId_),
35020a203aSopenharmony_ci    msg_(builder.msg_),
36020a203aSopenharmony_ci    packageName_(builder.packageName_),
37020a203aSopenharmony_ci    processName_(builder.processName_),
38020a203aSopenharmony_ci    foreGround_(builder.foreGround_),
39020a203aSopenharmony_ci    logPath_(builder.logPath_),
40020a203aSopenharmony_ci    hitraceTime_(builder.hitraceTime_),
41020a203aSopenharmony_ci    sysrqTime_(builder.sysrqTime_)
42020a203aSopenharmony_ci{
43020a203aSopenharmony_ci}
44020a203aSopenharmony_ci
45020a203aSopenharmony_ciWatchPoint::Builder::Builder()
46020a203aSopenharmony_ci    : seq_(0), timestamp_(0), pid_(0), uid_(0), tid_(0), domain_(""), stringId_(""), msg_("")
47020a203aSopenharmony_ci{
48020a203aSopenharmony_ci}
49020a203aSopenharmony_ci
50020a203aSopenharmony_ciWatchPoint::Builder::~Builder() {}
51020a203aSopenharmony_ci
52020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitSeq(long seq)
53020a203aSopenharmony_ci{
54020a203aSopenharmony_ci    seq_ = seq;
55020a203aSopenharmony_ci    return *this;
56020a203aSopenharmony_ci}
57020a203aSopenharmony_ci
58020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitTimestamp(unsigned long long timestamp)
59020a203aSopenharmony_ci{
60020a203aSopenharmony_ci    timestamp_ = timestamp;
61020a203aSopenharmony_ci    return *this;
62020a203aSopenharmony_ci}
63020a203aSopenharmony_ci
64020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitPid(long pid)
65020a203aSopenharmony_ci{
66020a203aSopenharmony_ci    pid_ = pid;
67020a203aSopenharmony_ci    return *this;
68020a203aSopenharmony_ci}
69020a203aSopenharmony_ci
70020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitUid(long uid)
71020a203aSopenharmony_ci{
72020a203aSopenharmony_ci    uid_ = uid;
73020a203aSopenharmony_ci    return *this;
74020a203aSopenharmony_ci}
75020a203aSopenharmony_ci
76020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitTid(long tid)
77020a203aSopenharmony_ci{
78020a203aSopenharmony_ci    tid_ = tid;
79020a203aSopenharmony_ci    return *this;
80020a203aSopenharmony_ci}
81020a203aSopenharmony_ci
82020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitDomain(const std::string& domain)
83020a203aSopenharmony_ci{
84020a203aSopenharmony_ci    domain_ = domain;
85020a203aSopenharmony_ci    return *this;
86020a203aSopenharmony_ci}
87020a203aSopenharmony_ci
88020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitStringId(const std::string& stringId)
89020a203aSopenharmony_ci{
90020a203aSopenharmony_ci    stringId_ = stringId;
91020a203aSopenharmony_ci    return *this;
92020a203aSopenharmony_ci}
93020a203aSopenharmony_ci
94020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitMsg(const std::string& msg)
95020a203aSopenharmony_ci{
96020a203aSopenharmony_ci    msg_ = msg;
97020a203aSopenharmony_ci    return *this;
98020a203aSopenharmony_ci}
99020a203aSopenharmony_ci
100020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitProcessName(const std::string& processName)
101020a203aSopenharmony_ci{
102020a203aSopenharmony_ci    processName_ = processName;
103020a203aSopenharmony_ci    return *this;
104020a203aSopenharmony_ci}
105020a203aSopenharmony_ci
106020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitPackageName(const std::string& packageName)
107020a203aSopenharmony_ci{
108020a203aSopenharmony_ci    packageName_ = packageName;
109020a203aSopenharmony_ci    return *this;
110020a203aSopenharmony_ci}
111020a203aSopenharmony_ci
112020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitForeGround(const std::string& foreGround)
113020a203aSopenharmony_ci{
114020a203aSopenharmony_ci    foreGround_ = foreGround;
115020a203aSopenharmony_ci    return *this;
116020a203aSopenharmony_ci}
117020a203aSopenharmony_ci
118020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitLogPath(const std::string& logPath)
119020a203aSopenharmony_ci{
120020a203aSopenharmony_ci    logPath_ = logPath;
121020a203aSopenharmony_ci    return *this;
122020a203aSopenharmony_ci}
123020a203aSopenharmony_ci
124020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitHitraceTime(const std::string& hitraceTime)
125020a203aSopenharmony_ci{
126020a203aSopenharmony_ci    hitraceTime_ = hitraceTime;
127020a203aSopenharmony_ci    return *this;
128020a203aSopenharmony_ci}
129020a203aSopenharmony_ci
130020a203aSopenharmony_ciWatchPoint::Builder& WatchPoint::Builder::InitSysrqTime(const std::string& sysrqTime)
131020a203aSopenharmony_ci{
132020a203aSopenharmony_ci    sysrqTime_ = sysrqTime;
133020a203aSopenharmony_ci    return *this;
134020a203aSopenharmony_ci}
135020a203aSopenharmony_ci
136020a203aSopenharmony_ciWatchPoint WatchPoint::Builder::Build() const
137020a203aSopenharmony_ci{
138020a203aSopenharmony_ci    WatchPoint watchPoint = WatchPoint(*this);
139020a203aSopenharmony_ci    return watchPoint;
140020a203aSopenharmony_ci}
141020a203aSopenharmony_ci
142020a203aSopenharmony_cilong WatchPoint::GetSeq() const
143020a203aSopenharmony_ci{
144020a203aSopenharmony_ci    return seq_;
145020a203aSopenharmony_ci}
146020a203aSopenharmony_ci
147020a203aSopenharmony_ciunsigned long long WatchPoint::GetTimestamp() const
148020a203aSopenharmony_ci{
149020a203aSopenharmony_ci    return timestamp_;
150020a203aSopenharmony_ci}
151020a203aSopenharmony_ci
152020a203aSopenharmony_cilong WatchPoint::GetPid() const
153020a203aSopenharmony_ci{
154020a203aSopenharmony_ci    return pid_;
155020a203aSopenharmony_ci}
156020a203aSopenharmony_ci
157020a203aSopenharmony_cilong WatchPoint::GetUid() const
158020a203aSopenharmony_ci{
159020a203aSopenharmony_ci    return uid_;
160020a203aSopenharmony_ci}
161020a203aSopenharmony_ci
162020a203aSopenharmony_cilong WatchPoint::GetTid() const
163020a203aSopenharmony_ci{
164020a203aSopenharmony_ci    return tid_;
165020a203aSopenharmony_ci}
166020a203aSopenharmony_ci
167020a203aSopenharmony_cistd::string WatchPoint::GetDomain() const
168020a203aSopenharmony_ci{
169020a203aSopenharmony_ci    return domain_;
170020a203aSopenharmony_ci}
171020a203aSopenharmony_ci
172020a203aSopenharmony_cistd::string WatchPoint::GetStringId() const
173020a203aSopenharmony_ci{
174020a203aSopenharmony_ci    return stringId_;
175020a203aSopenharmony_ci}
176020a203aSopenharmony_ci
177020a203aSopenharmony_cistd::string WatchPoint::GetMsg() const
178020a203aSopenharmony_ci{
179020a203aSopenharmony_ci    return msg_;
180020a203aSopenharmony_ci}
181020a203aSopenharmony_ci
182020a203aSopenharmony_cistd::string WatchPoint::GetPackageName() const
183020a203aSopenharmony_ci{
184020a203aSopenharmony_ci    return packageName_;
185020a203aSopenharmony_ci}
186020a203aSopenharmony_ci
187020a203aSopenharmony_cistd::string WatchPoint::GetProcessName() const
188020a203aSopenharmony_ci{
189020a203aSopenharmony_ci    return processName_;
190020a203aSopenharmony_ci}
191020a203aSopenharmony_ci
192020a203aSopenharmony_cistd::string WatchPoint::GetForeGround() const
193020a203aSopenharmony_ci{
194020a203aSopenharmony_ci    return foreGround_;
195020a203aSopenharmony_ci}
196020a203aSopenharmony_ci
197020a203aSopenharmony_cistd::string WatchPoint::GetLogPath() const
198020a203aSopenharmony_ci{
199020a203aSopenharmony_ci    return logPath_;
200020a203aSopenharmony_ci}
201020a203aSopenharmony_ci
202020a203aSopenharmony_cistd::string WatchPoint::GetHitraceTime() const
203020a203aSopenharmony_ci{
204020a203aSopenharmony_ci    return hitraceTime_;
205020a203aSopenharmony_ci}
206020a203aSopenharmony_ci
207020a203aSopenharmony_cistd::string WatchPoint::GetSysrqTime() const
208020a203aSopenharmony_ci{
209020a203aSopenharmony_ci    return sysrqTime_;
210020a203aSopenharmony_ci}
211020a203aSopenharmony_ci
212020a203aSopenharmony_civoid WatchPoint::SetLogPath(const std::string& logPath)
213020a203aSopenharmony_ci{
214020a203aSopenharmony_ci    logPath_ = logPath;
215020a203aSopenharmony_ci}
216020a203aSopenharmony_ci
217020a203aSopenharmony_civoid WatchPoint::SetSeq(long seq)
218020a203aSopenharmony_ci{
219020a203aSopenharmony_ci    seq_ = seq;
220020a203aSopenharmony_ci}
221020a203aSopenharmony_ci
222020a203aSopenharmony_cibool WatchPoint::operator<(const WatchPoint& node) const
223020a203aSopenharmony_ci{
224020a203aSopenharmony_ci    if (timestamp_ == node.timestamp_) {
225020a203aSopenharmony_ci        return stringId_.compare(node.GetStringId());
226020a203aSopenharmony_ci    }
227020a203aSopenharmony_ci    return timestamp_ < node.timestamp_;
228020a203aSopenharmony_ci}
229020a203aSopenharmony_ci
230020a203aSopenharmony_cibool WatchPoint::operator==(const WatchPoint& node) const
231020a203aSopenharmony_ci{
232020a203aSopenharmony_ci    return timestamp_ == node.GetTimestamp() && stringId_.compare(node.GetStringId());
233020a203aSopenharmony_ci}
234020a203aSopenharmony_ci} // namespace HiviewDFX
235020a203aSopenharmony_ci} // namespace OHOS
236