1e0e9324cSopenharmony_ci/*
2e0e9324cSopenharmony_ci * Copyright (c) 2023 Shenzhen Kaihong Digital Industry Development Co., Ltd.
3e0e9324cSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4e0e9324cSopenharmony_ci * you may not use this file except in compliance with the License.
5e0e9324cSopenharmony_ci * You may obtain a copy of the License at
6e0e9324cSopenharmony_ci *
7e0e9324cSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8e0e9324cSopenharmony_ci *
9e0e9324cSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10e0e9324cSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11e0e9324cSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e0e9324cSopenharmony_ci * See the License for the specific language governing permissions and
13e0e9324cSopenharmony_ci * limitations under the License.
14e0e9324cSopenharmony_ci */
15e0e9324cSopenharmony_ci
16e0e9324cSopenharmony_ci#include "sharing_data.h"
17e0e9324cSopenharmony_ci#include "common/media_log.h"
18e0e9324cSopenharmony_ci
19e0e9324cSopenharmony_cinamespace OHOS {
20e0e9324cSopenharmony_cinamespace Sharing {
21e0e9324cSopenharmony_cibool SharingValue::IsInt32()
22e0e9324cSopenharmony_ci{
23e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
24e0e9324cSopenharmony_ci    if (data_.index() == static_cast<std::size_t>(SharingIndex::VALUE_INDEX_INT32)) {
25e0e9324cSopenharmony_ci        return true;
26e0e9324cSopenharmony_ci    }
27e0e9324cSopenharmony_ci
28e0e9324cSopenharmony_ci    return false;
29e0e9324cSopenharmony_ci}
30e0e9324cSopenharmony_ci
31e0e9324cSopenharmony_cibool SharingValue::IsBool()
32e0e9324cSopenharmony_ci{
33e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
34e0e9324cSopenharmony_ci    if (data_.index() == static_cast<std::size_t>(SharingIndex::VALUE_INDEX_BOOL)) {
35e0e9324cSopenharmony_ci        return true;
36e0e9324cSopenharmony_ci    }
37e0e9324cSopenharmony_ci
38e0e9324cSopenharmony_ci    return false;
39e0e9324cSopenharmony_ci}
40e0e9324cSopenharmony_ci
41e0e9324cSopenharmony_cibool SharingValue::IsString()
42e0e9324cSopenharmony_ci{
43e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
44e0e9324cSopenharmony_ci    if (data_.index() == static_cast<std::size_t>(SharingIndex::VALUE_INDEX_STRING)) {
45e0e9324cSopenharmony_ci        return true;
46e0e9324cSopenharmony_ci    }
47e0e9324cSopenharmony_ci
48e0e9324cSopenharmony_ci    return false;
49e0e9324cSopenharmony_ci}
50e0e9324cSopenharmony_ci
51e0e9324cSopenharmony_cibool SharingValue::IsVector()
52e0e9324cSopenharmony_ci{
53e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
54e0e9324cSopenharmony_ci    if (data_.index() == static_cast<std::size_t>(SharingIndex::VALUE_INDEX_VECTOR)) {
55e0e9324cSopenharmony_ci        return true;
56e0e9324cSopenharmony_ci    }
57e0e9324cSopenharmony_ci
58e0e9324cSopenharmony_ci    return false;
59e0e9324cSopenharmony_ci}
60e0e9324cSopenharmony_ci
61e0e9324cSopenharmony_civoid SharingValue::Print()
62e0e9324cSopenharmony_ci{
63e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
64e0e9324cSopenharmony_ci    if (IsInt32()) {
65e0e9324cSopenharmony_ci        int32_t value = 0;
66e0e9324cSopenharmony_ci        GetValue(value);
67e0e9324cSopenharmony_ci        SHARING_LOGD("print %{public}d.", value);
68e0e9324cSopenharmony_ci    } else if (IsBool()) {
69e0e9324cSopenharmony_ci        bool value = 0;
70e0e9324cSopenharmony_ci        GetValue(value);
71e0e9324cSopenharmony_ci        SHARING_LOGD("print %{public}d.", value);
72e0e9324cSopenharmony_ci    } else if (IsString()) {
73e0e9324cSopenharmony_ci        std::string value("");
74e0e9324cSopenharmony_ci        GetValue(value);
75e0e9324cSopenharmony_ci        SHARING_LOGD("print %{public}s.", value.c_str());
76e0e9324cSopenharmony_ci    } else if (IsVector()) {
77e0e9324cSopenharmony_ci        std::vector<int32_t> value{};
78e0e9324cSopenharmony_ci        GetValue(value);
79e0e9324cSopenharmony_ci        for (auto &item : value) {
80e0e9324cSopenharmony_ci            SHARING_LOGD("print %{public}d.", item);
81e0e9324cSopenharmony_ci        }
82e0e9324cSopenharmony_ci    }
83e0e9324cSopenharmony_ci}
84e0e9324cSopenharmony_ci
85e0e9324cSopenharmony_ciint32_t SharingDataGroupByTag::PutSharingValue(const std::string &key, const SharingValue::Ptr value)
86e0e9324cSopenharmony_ci{
87e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
88e0e9324cSopenharmony_ci    auto iter = datas_.find(key);
89e0e9324cSopenharmony_ci    if (iter == datas_.end()) {
90e0e9324cSopenharmony_ci        datas_.emplace(key, value);
91e0e9324cSopenharmony_ci    } else {
92e0e9324cSopenharmony_ci        iter->second = value;
93e0e9324cSopenharmony_ci    }
94e0e9324cSopenharmony_ci
95e0e9324cSopenharmony_ci    return CONFIGURE_ERROR_NONE;
96e0e9324cSopenharmony_ci}
97e0e9324cSopenharmony_ci
98e0e9324cSopenharmony_ciint32_t SharingDataGroupByTag::PutSharingValues(const std::unordered_map<std::string, SharingValue::Ptr> &values)
99e0e9324cSopenharmony_ci{
100e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
101e0e9324cSopenharmony_ci    datas_ = values;
102e0e9324cSopenharmony_ci    return CONFIGURE_ERROR_NONE;
103e0e9324cSopenharmony_ci}
104e0e9324cSopenharmony_ci
105e0e9324cSopenharmony_ciSharingValue::Ptr SharingDataGroupByTag::GetSharingValue(const std::string &key)
106e0e9324cSopenharmony_ci{
107e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
108e0e9324cSopenharmony_ci    SharingValue::Ptr value = nullptr;
109e0e9324cSopenharmony_ci    auto iter = datas_.find(key);
110e0e9324cSopenharmony_ci    if (iter != datas_.end()) {
111e0e9324cSopenharmony_ci        value = iter->second;
112e0e9324cSopenharmony_ci    }
113e0e9324cSopenharmony_ci
114e0e9324cSopenharmony_ci    return value;
115e0e9324cSopenharmony_ci}
116e0e9324cSopenharmony_ci
117e0e9324cSopenharmony_ciint32_t SharingDataGroupByTag::GetSharingValues(std::unordered_map<std::string, SharingValue::Ptr> &values)
118e0e9324cSopenharmony_ci{
119e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
120e0e9324cSopenharmony_ci    values = datas_;
121e0e9324cSopenharmony_ci    return CONFIGURE_ERROR_NONE;
122e0e9324cSopenharmony_ci}
123e0e9324cSopenharmony_ci
124e0e9324cSopenharmony_cibool SharingDataGroupByTag::HasKey(const std::string &key)
125e0e9324cSopenharmony_ci{
126e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
127e0e9324cSopenharmony_ci    return datas_.find(key) != datas_.end();
128e0e9324cSopenharmony_ci}
129e0e9324cSopenharmony_ci
130e0e9324cSopenharmony_civoid SharingDataGroupByTag::ForEach(Each each)
131e0e9324cSopenharmony_ci{
132e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
133e0e9324cSopenharmony_ci    auto iter = datas_.begin();
134e0e9324cSopenharmony_ci    while (iter != datas_.end()) {
135e0e9324cSopenharmony_ci        std::string key = iter->first;
136e0e9324cSopenharmony_ci        each(key, iter->second);
137e0e9324cSopenharmony_ci        iter++;
138e0e9324cSopenharmony_ci    }
139e0e9324cSopenharmony_ci}
140e0e9324cSopenharmony_ci
141e0e9324cSopenharmony_civoid SharingDataGroupByTag::Print()
142e0e9324cSopenharmony_ci{
143e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
144e0e9324cSopenharmony_ci    auto iter = datas_.begin();
145e0e9324cSopenharmony_ci    while (iter != datas_.end()) {
146e0e9324cSopenharmony_ci        std::string key = iter->first;
147e0e9324cSopenharmony_ci        SharingValue::Ptr value = iter->second;
148e0e9324cSopenharmony_ci        value->Print();
149e0e9324cSopenharmony_ci        iter++;
150e0e9324cSopenharmony_ci    }
151e0e9324cSopenharmony_ci}
152e0e9324cSopenharmony_ci
153e0e9324cSopenharmony_ciint32_t SharingDataGroupByModule::PutSharingValue(const std::string &tag, const std::string &key,
154e0e9324cSopenharmony_ci                                                  const SharingValue::Ptr value)
155e0e9324cSopenharmony_ci{
156e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
157e0e9324cSopenharmony_ci    auto iter = datass_.find(tag);
158e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
159e0e9324cSopenharmony_ci        auto grpData = std::make_shared<SharingDataGroupByTag>(tag);
160e0e9324cSopenharmony_ci        if (grpData == nullptr) {
161e0e9324cSopenharmony_ci            SHARING_LOGE("CONFIGURE_ERROR_NOT_FIND.");
162e0e9324cSopenharmony_ci            return CONFIGURE_ERROR_NOT_FIND;
163e0e9324cSopenharmony_ci        }
164e0e9324cSopenharmony_ci        grpData->PutSharingValue(key, value);
165e0e9324cSopenharmony_ci        datass_.emplace(std::make_pair(tag, grpData));
166e0e9324cSopenharmony_ci        return CONFIGURE_ERROR_NONE;
167e0e9324cSopenharmony_ci    }
168e0e9324cSopenharmony_ci
169e0e9324cSopenharmony_ci    return iter->second->PutSharingValue(key, value);
170e0e9324cSopenharmony_ci}
171e0e9324cSopenharmony_ci
172e0e9324cSopenharmony_ciint32_t SharingDataGroupByModule::PutSharingValues(const std::string &tag,
173e0e9324cSopenharmony_ci                                                   const std::unordered_map<std::string, SharingValue::Ptr> &values)
174e0e9324cSopenharmony_ci{
175e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
176e0e9324cSopenharmony_ci    auto iter = datass_.find(tag);
177e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
178e0e9324cSopenharmony_ci        auto grpData = std::make_shared<SharingDataGroupByTag>(tag);
179e0e9324cSopenharmony_ci        if (grpData == nullptr) {
180e0e9324cSopenharmony_ci            SHARING_LOGE("CONFIGURE_ERROR_NOT_FIND.");
181e0e9324cSopenharmony_ci            return CONFIGURE_ERROR_NOT_FIND;
182e0e9324cSopenharmony_ci        }
183e0e9324cSopenharmony_ci        grpData->PutSharingValues(values);
184e0e9324cSopenharmony_ci        datass_.emplace(std::make_pair(tag, grpData));
185e0e9324cSopenharmony_ci        return CONFIGURE_ERROR_NONE;
186e0e9324cSopenharmony_ci    }
187e0e9324cSopenharmony_ci
188e0e9324cSopenharmony_ci    return iter->second->PutSharingValues(values);
189e0e9324cSopenharmony_ci}
190e0e9324cSopenharmony_ci
191e0e9324cSopenharmony_ciint32_t SharingDataGroupByModule::PutSharingValues(const std::string &tag, const SharingDataGroupByTag::Ptr &value)
192e0e9324cSopenharmony_ci{
193e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
194e0e9324cSopenharmony_ci    auto iter = datass_.find(tag);
195e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
196e0e9324cSopenharmony_ci        datass_.emplace(std::make_pair(tag, value));
197e0e9324cSopenharmony_ci        return CONFIGURE_ERROR_NONE;
198e0e9324cSopenharmony_ci    }
199e0e9324cSopenharmony_ci
200e0e9324cSopenharmony_ci    iter->second = value;
201e0e9324cSopenharmony_ci    return CONFIGURE_ERROR_NONE;
202e0e9324cSopenharmony_ci}
203e0e9324cSopenharmony_ci
204e0e9324cSopenharmony_ciSharingValue::Ptr SharingDataGroupByModule::GetSharingValue(const std::string &tag, const std::string &key)
205e0e9324cSopenharmony_ci{
206e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
207e0e9324cSopenharmony_ci    auto iter = datass_.find(tag);
208e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
209e0e9324cSopenharmony_ci        SHARING_LOGE("nullptr.");
210e0e9324cSopenharmony_ci        return nullptr;
211e0e9324cSopenharmony_ci    }
212e0e9324cSopenharmony_ci
213e0e9324cSopenharmony_ci    return iter->second->GetSharingValue(key);
214e0e9324cSopenharmony_ci}
215e0e9324cSopenharmony_ci
216e0e9324cSopenharmony_ciint32_t SharingDataGroupByModule::GetSharingValues(const std::string &tag,
217e0e9324cSopenharmony_ci                                                   std::unordered_map<std::string, SharingValue::Ptr> &values)
218e0e9324cSopenharmony_ci{
219e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
220e0e9324cSopenharmony_ci    auto iter = datass_.find(tag);
221e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
222e0e9324cSopenharmony_ci        SHARING_LOGE("CONFIGURE_ERROR_NOT_FIND.");
223e0e9324cSopenharmony_ci        return CONFIGURE_ERROR_NOT_FIND;
224e0e9324cSopenharmony_ci    }
225e0e9324cSopenharmony_ci
226e0e9324cSopenharmony_ci    return iter->second->GetSharingValues(values);
227e0e9324cSopenharmony_ci}
228e0e9324cSopenharmony_ci
229e0e9324cSopenharmony_ciint32_t SharingDataGroupByModule::GetSharingValues(const std::string &tag, SharingDataGroupByTag::Ptr &value)
230e0e9324cSopenharmony_ci{
231e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
232e0e9324cSopenharmony_ci    auto iter = datass_.find(tag);
233e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
234e0e9324cSopenharmony_ci        SHARING_LOGE("CONFIGURE_ERROR_NOT_FIND.");
235e0e9324cSopenharmony_ci        return CONFIGURE_ERROR_NOT_FIND;
236e0e9324cSopenharmony_ci    }
237e0e9324cSopenharmony_ci
238e0e9324cSopenharmony_ci    value = iter->second;
239e0e9324cSopenharmony_ci    return CONFIGURE_ERROR_NONE;
240e0e9324cSopenharmony_ci}
241e0e9324cSopenharmony_ci
242e0e9324cSopenharmony_cibool SharingDataGroupByModule::HasKey(const std::string &tag, const std::string &key)
243e0e9324cSopenharmony_ci{
244e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
245e0e9324cSopenharmony_ci    auto iter = datass_.find(tag);
246e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
247e0e9324cSopenharmony_ci        return false;
248e0e9324cSopenharmony_ci    }
249e0e9324cSopenharmony_ci
250e0e9324cSopenharmony_ci    return iter->second->HasKey(key);
251e0e9324cSopenharmony_ci}
252e0e9324cSopenharmony_ci
253e0e9324cSopenharmony_cibool SharingDataGroupByModule::HasTag(const std::string &tag)
254e0e9324cSopenharmony_ci{
255e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
256e0e9324cSopenharmony_ci    return datass_.find(tag) != datass_.end();
257e0e9324cSopenharmony_ci}
258e0e9324cSopenharmony_ci
259e0e9324cSopenharmony_civoid SharingDataGroupByModule::ForEach(Each each)
260e0e9324cSopenharmony_ci{
261e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
262e0e9324cSopenharmony_ci    auto iter = datass_.begin();
263e0e9324cSopenharmony_ci    while (iter != datass_.end()) {
264e0e9324cSopenharmony_ci        std::string key = iter->first;
265e0e9324cSopenharmony_ci        each(key, iter->second);
266e0e9324cSopenharmony_ci        iter++;
267e0e9324cSopenharmony_ci    }
268e0e9324cSopenharmony_ci}
269e0e9324cSopenharmony_ci
270e0e9324cSopenharmony_civoid SharingDataGroupByModule::Print()
271e0e9324cSopenharmony_ci{
272e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
273e0e9324cSopenharmony_ci    auto iter = datass_.begin();
274e0e9324cSopenharmony_ci    while (iter != datass_.end()) {
275e0e9324cSopenharmony_ci        SHARING_LOGD("forEach print %{public}s.", iter->first.c_str());
276e0e9324cSopenharmony_ci        SharingDataGroupByTag::Ptr value = iter->second;
277e0e9324cSopenharmony_ci        value->Print();
278e0e9324cSopenharmony_ci        iter++;
279e0e9324cSopenharmony_ci    }
280e0e9324cSopenharmony_ci}
281e0e9324cSopenharmony_ci
282e0e9324cSopenharmony_ciint32_t SharingData::PutSharingValue(const std::string &key, const SharingValue::Ptr value, const std::string &module,
283e0e9324cSopenharmony_ci                                     const std::string &tag)
284e0e9324cSopenharmony_ci{
285e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
286e0e9324cSopenharmony_ci    auto iter = datass_.find(module);
287e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
288e0e9324cSopenharmony_ci        auto moduleData = std::make_shared<SharingDataGroupByModule>(module);
289e0e9324cSopenharmony_ci        if (moduleData == nullptr) {
290e0e9324cSopenharmony_ci            SHARING_LOGE("CONFIGURE_ERROR_NOT_FIND.");
291e0e9324cSopenharmony_ci            return CONFIGURE_ERROR_NOT_FIND;
292e0e9324cSopenharmony_ci        }
293e0e9324cSopenharmony_ci        moduleData->PutSharingValue(tag, key, value);
294e0e9324cSopenharmony_ci        datass_.emplace(std::make_pair(module, moduleData));
295e0e9324cSopenharmony_ci        return CONFIGURE_ERROR_NONE;
296e0e9324cSopenharmony_ci    }
297e0e9324cSopenharmony_ci
298e0e9324cSopenharmony_ci    return iter->second->PutSharingValue(tag, key, value);
299e0e9324cSopenharmony_ci}
300e0e9324cSopenharmony_ciint32_t SharingData::PutSharingValues(const SharingDataGroupByModule::Ptr &values, const std::string &module)
301e0e9324cSopenharmony_ci{
302e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
303e0e9324cSopenharmony_ci    auto iter = datass_.find(module);
304e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
305e0e9324cSopenharmony_ci        datass_.emplace(std::make_pair(module, values));
306e0e9324cSopenharmony_ci        return CONFIGURE_ERROR_NONE;
307e0e9324cSopenharmony_ci    }
308e0e9324cSopenharmony_ci
309e0e9324cSopenharmony_ci    iter->second = values;
310e0e9324cSopenharmony_ci    return CONFIGURE_ERROR_NONE;
311e0e9324cSopenharmony_ci}
312e0e9324cSopenharmony_ci
313e0e9324cSopenharmony_ciint32_t SharingData::PutSharingValues(const std::unordered_map<std::string, SharingValue::Ptr> &values,
314e0e9324cSopenharmony_ci                                      const std::string &module, const std::string &tag)
315e0e9324cSopenharmony_ci{
316e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
317e0e9324cSopenharmony_ci    auto iter = datass_.find(module);
318e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
319e0e9324cSopenharmony_ci        auto moduleData = std::make_shared<SharingDataGroupByModule>(module);
320e0e9324cSopenharmony_ci        if (moduleData == nullptr) {
321e0e9324cSopenharmony_ci            SHARING_LOGE("CONFIGURE_ERROR_NOT_FIND.");
322e0e9324cSopenharmony_ci            return CONFIGURE_ERROR_NOT_FIND;
323e0e9324cSopenharmony_ci        }
324e0e9324cSopenharmony_ci        moduleData->PutSharingValues(tag, values);
325e0e9324cSopenharmony_ci        datass_.emplace(std::make_pair(module, moduleData));
326e0e9324cSopenharmony_ci        return CONFIGURE_ERROR_NONE;
327e0e9324cSopenharmony_ci    }
328e0e9324cSopenharmony_ci
329e0e9324cSopenharmony_ci    return iter->second->PutSharingValues(tag, values);
330e0e9324cSopenharmony_ci}
331e0e9324cSopenharmony_ci
332e0e9324cSopenharmony_ciSharingValue::Ptr SharingData::GetSharingValue(const std::string &key, const std::string &module,
333e0e9324cSopenharmony_ci                                               const std::string &tag)
334e0e9324cSopenharmony_ci{
335e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
336e0e9324cSopenharmony_ci    auto iter = datass_.find(module);
337e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
338e0e9324cSopenharmony_ci        return nullptr;
339e0e9324cSopenharmony_ci    }
340e0e9324cSopenharmony_ci
341e0e9324cSopenharmony_ci    return iter->second->GetSharingValue(tag, key);
342e0e9324cSopenharmony_ci}
343e0e9324cSopenharmony_ci
344e0e9324cSopenharmony_ciint32_t SharingData::GetSharingValues(SharingDataGroupByModule::Ptr &values, const std::string &module)
345e0e9324cSopenharmony_ci{
346e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
347e0e9324cSopenharmony_ci    auto iter = datass_.find(module);
348e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
349e0e9324cSopenharmony_ci        return CONFIGURE_ERROR_NOT_FIND;
350e0e9324cSopenharmony_ci    }
351e0e9324cSopenharmony_ci
352e0e9324cSopenharmony_ci    values = iter->second;
353e0e9324cSopenharmony_ci    return CONFIGURE_ERROR_NONE;
354e0e9324cSopenharmony_ci}
355e0e9324cSopenharmony_ci
356e0e9324cSopenharmony_ciint32_t SharingData::GetSharingValues(std::unordered_map<std::string, SharingValue::Ptr> &values,
357e0e9324cSopenharmony_ci                                      const std::string &module, const std::string &tag)
358e0e9324cSopenharmony_ci{
359e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
360e0e9324cSopenharmony_ci    auto iter = datass_.find(module);
361e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
362e0e9324cSopenharmony_ci        return CONFIGURE_ERROR_NOT_FIND;
363e0e9324cSopenharmony_ci    }
364e0e9324cSopenharmony_ci
365e0e9324cSopenharmony_ci    return iter->second->GetSharingValues(tag, values);
366e0e9324cSopenharmony_ci}
367e0e9324cSopenharmony_ci
368e0e9324cSopenharmony_ciint32_t SharingData::GetSharingValues(SharingDataGroupByTag::Ptr &value, const std::string &module,
369e0e9324cSopenharmony_ci                                      const std::string &tag)
370e0e9324cSopenharmony_ci{
371e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
372e0e9324cSopenharmony_ci    auto iter = datass_.find(module);
373e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
374e0e9324cSopenharmony_ci        return CONFIGURE_ERROR_NOT_FIND;
375e0e9324cSopenharmony_ci    }
376e0e9324cSopenharmony_ci
377e0e9324cSopenharmony_ci    return iter->second->GetSharingValues(tag, value);
378e0e9324cSopenharmony_ci}
379e0e9324cSopenharmony_ci
380e0e9324cSopenharmony_cibool SharingData::HasKey(const std::string &key, const std::string &module, const std::string &tag)
381e0e9324cSopenharmony_ci{
382e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
383e0e9324cSopenharmony_ci    auto iter = datass_.find(module);
384e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
385e0e9324cSopenharmony_ci        return false;
386e0e9324cSopenharmony_ci    }
387e0e9324cSopenharmony_ci
388e0e9324cSopenharmony_ci    return iter->second->HasKey(tag, key);
389e0e9324cSopenharmony_ci}
390e0e9324cSopenharmony_ci
391e0e9324cSopenharmony_cibool SharingData::HasModule(const std::string &module)
392e0e9324cSopenharmony_ci{
393e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
394e0e9324cSopenharmony_ci    return datass_.find(module) != datass_.end();
395e0e9324cSopenharmony_ci}
396e0e9324cSopenharmony_ci
397e0e9324cSopenharmony_cibool SharingData::HasTag(const std::string &module, const std::string &tag)
398e0e9324cSopenharmony_ci{
399e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
400e0e9324cSopenharmony_ci    auto iter = datass_.find(module);
401e0e9324cSopenharmony_ci    if (iter == datass_.end()) {
402e0e9324cSopenharmony_ci        return false;
403e0e9324cSopenharmony_ci    }
404e0e9324cSopenharmony_ci
405e0e9324cSopenharmony_ci    return iter->second->HasTag(tag);
406e0e9324cSopenharmony_ci}
407e0e9324cSopenharmony_ci
408e0e9324cSopenharmony_civoid SharingData::ForEach(Each each)
409e0e9324cSopenharmony_ci{
410e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
411e0e9324cSopenharmony_ci    auto iter = datass_.begin();
412e0e9324cSopenharmony_ci    while (iter != datass_.end()) {
413e0e9324cSopenharmony_ci        std::string key = iter->first;
414e0e9324cSopenharmony_ci        SHARING_LOGD("forEach %{public}s.", key.c_str());
415e0e9324cSopenharmony_ci        each(key, iter->second);
416e0e9324cSopenharmony_ci        iter++;
417e0e9324cSopenharmony_ci    }
418e0e9324cSopenharmony_ci}
419e0e9324cSopenharmony_ci
420e0e9324cSopenharmony_civoid SharingData::Print()
421e0e9324cSopenharmony_ci{
422e0e9324cSopenharmony_ci    SHARING_LOGD("trace.");
423e0e9324cSopenharmony_ci    auto iter = datass_.begin();
424e0e9324cSopenharmony_ci    while (iter != datass_.end()) {
425e0e9324cSopenharmony_ci        SHARING_LOGD("forEach print %{public}s.", iter->first.c_str());
426e0e9324cSopenharmony_ci        SharingDataGroupByModule::Ptr value = iter->second;
427e0e9324cSopenharmony_ci        value->Print();
428e0e9324cSopenharmony_ci        iter++;
429e0e9324cSopenharmony_ci    }
430e0e9324cSopenharmony_ci}
431e0e9324cSopenharmony_ci
432e0e9324cSopenharmony_ci} // namespace Sharing
433e0e9324cSopenharmony_ci} // namespace OHOS