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