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