1 /*
2 * Copyright (c) 2025 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
16 #define LOG_TAG "DataProxyHandle"
17
18 #include <utility>
19 #include "dataproxy_handle.h"
20
21 #include "adaptor.h"
22 #include "datashare_errno.h"
23 #include "datashare_log.h"
24 #include "data_share_manager_impl.h"
25 #include "proxy_data_subscriber_manager.h"
26
27 namespace OHOS {
28 namespace DataShare {
29
Create()30 std::pair<int, std::shared_ptr<DataProxyHandle>> DataProxyHandle::Create()
31 {
32 DISTRIBUTED_DATA_HITRACE(std::string(LOG_TAG) + "::" + std::string(__FUNCTION__));
33 auto manager = DataShareManagerImpl::GetInstance();
34 if (manager == nullptr) {
35 LOG_ERROR("Manager is nullptr");
36 return std::make_pair(E_ERROR, nullptr);
37 }
38 if (DataShareManagerImpl::GetServiceProxy() == nullptr) {
39 LOG_ERROR("Service proxy is nullptr.");
40 return std::make_pair(E_ERROR, nullptr);
41 }
42 auto handler = std::make_shared<DataProxyHandle>();
43 if (handler != nullptr) {
44 return std::make_pair(E_OK, handler);
45 }
46 return std::make_pair(E_ERROR, nullptr);
47 }
48
PublishProxyData(const std::vector<DataShareProxyData> & proxyData,const DataProxyConfig & proxyConfig)49 std::vector<DataProxyResult> DataProxyHandle::PublishProxyData(
50 const std::vector<DataShareProxyData> &proxyData, const DataProxyConfig &proxyConfig)
51 {
52 auto proxy = DataShareManagerImpl::GetServiceProxy();
53 if (proxy == nullptr) {
54 LOG_ERROR("proxy is nullptr");
55 return std::vector<DataProxyResult>();
56 }
57 return proxy->PublishProxyData(proxyData, proxyConfig);
58 }
59
DeleteProxyData(const std::vector<std::string> & uris,const DataProxyConfig & proxyConfig)60 std::vector<DataProxyResult> DataProxyHandle::DeleteProxyData(
61 const std::vector<std::string> &uris, const DataProxyConfig &proxyConfig)
62 {
63 auto proxy = DataShareManagerImpl::GetServiceProxy();
64 if (proxy == nullptr) {
65 LOG_ERROR("proxy is nullptr");
66 return std::vector<DataProxyResult>();
67 }
68 return proxy->DeleteProxyData(uris, proxyConfig);
69 }
70
GetProxyData(const std::vector<std::string> uris,const DataProxyConfig & proxyConfig)71 std::vector<DataProxyGetResult> DataProxyHandle::GetProxyData(
72 const std::vector<std::string> uris, const DataProxyConfig &proxyConfig)
73 {
74 auto proxy = DataShareManagerImpl::GetServiceProxy();
75 if (proxy == nullptr) {
76 LOG_ERROR("proxy is nullptr");
77 return std::vector<DataProxyGetResult>();
78 }
79 return proxy->GetProxyData(uris, proxyConfig);
80 }
81
SubscribeProxyData(const std::vector<std::string> & uris,const std::function<void (const std::vector<DataProxyChangeInfo> & changeNode)> & callback)82 std::vector<DataProxyResult> DataProxyHandle::SubscribeProxyData(const std::vector<std::string> &uris,
83 const std::function<void(const std::vector<DataProxyChangeInfo> &changeNode)> &callback)
84 {
85 auto proxy = DataShareManagerImpl::GetServiceProxy();
86 if (proxy == nullptr) {
87 LOG_ERROR("proxy is nullptr");
88 return std::vector<DataProxyResult>();
89 }
90 return ProxyDataSubscriberManager::GetInstance().AddObservers(this, proxy, uris, callback);
91 }
92
UnsubscribeProxyData(const std::vector<std::string> & uris)93 std::vector<DataProxyResult> DataProxyHandle::UnsubscribeProxyData(const std::vector<std::string> &uris)
94 {
95 auto proxy = DataShareManagerImpl::GetServiceProxy();
96 if (proxy == nullptr) {
97 LOG_ERROR("proxy is nullptr");
98 return std::vector<DataProxyResult>();
99 }
100 return ProxyDataSubscriberManager::GetInstance().DelObservers(this, proxy, uris);
101 }
102 } // namespace DataShare
103 } // namespace OHOS