1 /*
2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 #include "common/option_args.h"
16 #include "hilog_wrapper.h"
17 namespace OHOS {
18 namespace HiviewDFX {
OptionArgs()19 OptionArgs::OptionArgs()
20 {
21 }
22
~OptionArgs()23 OptionArgs::~OptionArgs()
24 {
25 list_.clear();
26 names_.clear();
27 args_.clear();
28 }
29
operator =(const OptionArgs & optArgs)30 OptionArgs& OptionArgs::operator=(const OptionArgs& optArgs)
31 {
32 type_ = optArgs.type_;
33
34 hasPid_ = optArgs.hasPid_;
35 pid_ = optArgs.pid_;
36 uid_ = optArgs.uid_;
37
38 hasCpuId_ = optArgs.hasCpuId_;
39 cpuId_ = optArgs.cpuId_;
40
41 hasStr_ = optArgs.hasStr_;
42 str_ = optArgs.str_;
43
44 hasList_ = optArgs.hasList_;
45 list_.assign(optArgs.list_.begin(), optArgs.list_.end());
46
47 hasNamesAndArgs_ = optArgs.hasNamesAndArgs_;
48 names_.assign(optArgs.names_.begin(), optArgs.names_.end());
49 args_.assign(optArgs.args_.begin(), optArgs.args_.end());
50
51 return *this;
52 }
53
HasPid() const54 bool OptionArgs::HasPid() const
55 {
56 return hasPid_;
57 }
58
SetPid(int pid,int uid)59 void OptionArgs::SetPid(int pid, int uid)
60 {
61 hasPid_ = true;
62 pid_ = pid;
63 uid_ = uid;
64 }
65
GetPid() const66 int OptionArgs::GetPid() const
67 {
68 return pid_;
69 }
70
GetUid() const71 int OptionArgs::GetUid() const
72 {
73 return uid_;
74 }
75
HasCpuId() const76 bool OptionArgs::HasCpuId() const
77 {
78 return hasCpuId_;
79 }
80
SetCpuId(int cpuid)81 void OptionArgs::SetCpuId(int cpuid)
82 {
83 hasCpuId_ = true;
84 cpuId_ = cpuid;
85 }
86
GetCpuId() const87 int OptionArgs::GetCpuId() const
88 {
89 return cpuId_;
90 }
91
HasStr() const92 bool OptionArgs::HasStr() const
93 {
94 return hasStr_;
95 }
96
SetStr(const std::string & str)97 void OptionArgs::SetStr(const std::string& str)
98 {
99 hasStr_ = true;
100 str_ = str;
101 }
102
GetStr() const103 const std::string& OptionArgs::GetStr() const
104 {
105 return str_;
106 }
107
HasStrList() const108 bool OptionArgs::HasStrList() const
109 {
110 return hasList_;
111 }
112
SetStrList(const std::vector<std::string> & list)113 void OptionArgs::SetStrList(const std::vector<std::string>& list)
114 {
115 hasList_ = true;
116 list_.assign(list.begin(), list.end());
117 }
118
GetStrList() const119 const std::vector<std::string>& OptionArgs::GetStrList() const
120 {
121 return list_;
122 }
123
HasNamesAndArgs() const124 bool OptionArgs::HasNamesAndArgs() const
125 {
126 return hasNamesAndArgs_;
127 }
128
SetNamesAndArgs(const std::vector<std::string> & names,const std::vector<std::string> & args)129 void OptionArgs::SetNamesAndArgs(const std::vector<std::string>& names, const std::vector<std::string>& args)
130 {
131 hasNamesAndArgs_ = true;
132 names_.assign(names.begin(), names.end());
133 args_.assign(args.begin(), args.end());
134 }
135
GetNameList() const136 const std::vector<std::string>& OptionArgs::GetNameList() const
137 {
138 return names_;
139 }
140
GetArgList() const141 const std::vector<std::string>& OptionArgs::GetArgList() const
142 {
143 return args_;
144 }
145
Dump() const146 void OptionArgs::Dump() const
147 {
148 if (HasPid()) {
149 DUMPER_HILOGD(MODULE_COMMON, "debug| pid=%{public}d, uid=%{public}d", pid_, uid_);
150 }
151 if (HasCpuId()) {
152 DUMPER_HILOGD(MODULE_COMMON, "debug| cpuId=%{public}d", cpuId_);
153 }
154 if (HasStr()) {
155 DUMPER_HILOGD(MODULE_COMMON, "debug| str=%{public}s", str_.c_str());
156 }
157 if (HasStrList()) {
158 for (size_t i = 0; i < list_.size(); i++) {
159 DUMPER_HILOGD(MODULE_COMMON, "debug| list[%{public}zu]=%{public}s", i, list_[i].c_str());
160 }
161 }
162 if (HasNamesAndArgs()) {
163 for (size_t i = 0; i < names_.size(); i++) {
164 DUMPER_HILOGD(MODULE_COMMON, "debug| names[%{public}zu]=%{public}s", i, names_[i].c_str());
165 }
166 for (size_t i = 0; i < args_.size(); i++) {
167 DUMPER_HILOGD(MODULE_COMMON, "debug| args[%{public}zu]=%{public}s", i, args_[i].c_str());
168 }
169 }
170 }
171
Clone(std::shared_ptr<OptionArgs> & optArgs)172 std::shared_ptr<OptionArgs> OptionArgs::Clone(std::shared_ptr<OptionArgs>& optArgs)
173 {
174 auto ret = Create();
175 if (optArgs != nullptr) {
176 ret->type_ = optArgs->type_;
177 ret->hasPid_ = optArgs->hasPid_;
178 ret->pid_ = optArgs->pid_;
179 ret->uid_ = optArgs->uid_;
180 ret->hasCpuId_ = optArgs->hasCpuId_;
181 ret->cpuId_ = optArgs->cpuId_;
182 ret->hasStr_ = optArgs->hasStr_;
183 ret->str_ = optArgs->str_;
184 ret->hasList_ = optArgs->hasList_;
185 ret->list_.assign(optArgs->list_.begin(), optArgs->list_.end());
186 ret->hasNamesAndArgs_ = optArgs->hasNamesAndArgs_;
187 ret->names_.assign(optArgs->names_.begin(), optArgs->names_.end());
188 ret->args_.assign(optArgs->args_.begin(), optArgs->args_.end());
189 }
190 return ret;
191 }
192
Create()193 std::shared_ptr<OptionArgs> OptionArgs::Create()
194 {
195 return std::make_shared<OptionArgs>();
196 }
197 } // namespace HiviewDFX
198 } // namespace OHOS
199