1 /*
2 * Copyright (c) 2023 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 #include "published_data_controller.h"
17
18 #include "datashare_log.h"
19 #include "published_data_subscriber_manager.h"
20
21 namespace OHOS {
22 namespace DataShare {
Publish(const Data & data,const std::string & bundleName)23 std::vector<OperationResult> PublishedDataController::Publish(const Data &data, const std::string &bundleName)
24 {
25 auto proxy = DataShareManagerImpl::GetServiceProxy();
26 if (proxy == nullptr) {
27 LOG_ERROR("proxy is nullptr");
28 return std::vector<OperationResult>();
29 }
30 return proxy->Publish(data, bundleName);
31 }
32
GetPublishedData(const std::string & bundleName,int & resultCode)33 Data PublishedDataController::GetPublishedData(const std::string &bundleName, int &resultCode)
34 {
35 auto proxy = DataShareManagerImpl::GetServiceProxy();
36 if (proxy == nullptr) {
37 LOG_ERROR("proxy is nullptr");
38 return Data();
39 }
40 return proxy->GetPublishedData(bundleName, resultCode);
41 }
42
SubscribePublishedData(void * subscriber,const std::vector<std::string> & uris,int64_t subscriberId,const std::function<void (const PublishedDataChangeNode & changeNode)> & callback)43 std::vector<OperationResult> PublishedDataController::SubscribePublishedData(void *subscriber,
44 const std::vector<std::string> &uris, int64_t subscriberId,
45 const std::function<void(const PublishedDataChangeNode &changeNode)> &callback)
46 {
47 auto proxy = DataShareManagerImpl::GetServiceProxy();
48 if (proxy == nullptr) {
49 LOG_ERROR("proxy is nullptr");
50 return std::vector<OperationResult>();
51 }
52 return PublishedDataSubscriberManager::GetInstance().AddObservers(subscriber, proxy, uris, subscriberId, callback);
53 }
54
UnSubscribePublishedData(void * subscriber,const std::vector<std::string> & uris,int64_t subscriberId)55 std::vector<OperationResult> PublishedDataController::UnSubscribePublishedData(void *subscriber,
56 const std::vector<std::string> &uris, int64_t subscriberId)
57 {
58 auto proxy = DataShareManagerImpl::GetServiceProxy();
59 if (proxy == nullptr) {
60 LOG_ERROR("proxy is nullptr");
61 return std::vector<OperationResult>();
62 }
63 if (uris.empty()) {
64 return PublishedDataSubscriberManager::GetInstance().DelObservers(subscriber, proxy);
65 }
66 return PublishedDataSubscriberManager::GetInstance().DelObservers(subscriber, proxy, uris, subscriberId);
67 }
68
EnableSubscribePublishedData(void * subscriber,const std::vector<std::string> & uris,int64_t subscriberId)69 std::vector<OperationResult> PublishedDataController::EnableSubscribePublishedData(void *subscriber,
70 const std::vector<std::string> &uris, int64_t subscriberId)
71 {
72 auto proxy = DataShareManagerImpl::GetServiceProxy();
73 if (proxy == nullptr) {
74 LOG_ERROR("proxy is nullptr");
75 return std::vector<OperationResult>();
76 }
77 return PublishedDataSubscriberManager::GetInstance().EnableObservers(subscriber, proxy, uris, subscriberId);
78 }
79
DisableSubscribePublishedData(void * subscriber,const std::vector<std::string> & uris,int64_t subscriberId)80 std::vector<OperationResult> PublishedDataController::DisableSubscribePublishedData(void *subscriber,
81 const std::vector<std::string> &uris, int64_t subscriberId)
82 {
83 auto proxy = DataShareManagerImpl::GetServiceProxy();
84 if (proxy == nullptr) {
85 LOG_ERROR("proxy is nullptr");
86 return std::vector<OperationResult>();
87 }
88 return PublishedDataSubscriberManager::GetInstance().DisableObservers(subscriber, proxy, uris, subscriberId);
89 }
90 } // namespace DataShare
91 } // namespace OHOS