• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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