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 #include "persistent_data_controller.h"
16
17 #include "datashare_log.h"
18 #include "rdb_subscriber_manager.h"
19
20 namespace OHOS {
21 namespace DataShare {
22 constexpr int INVALID_VALUE = -1;
AddQueryTemplate(const std::string & uri,int64_t subscriberId,Template & tpl)23 int PersistentDataController::AddQueryTemplate(const std::string &uri, int64_t subscriberId, Template &tpl)
24 {
25 auto proxy = DataShareManagerImpl::GetServiceProxy();
26 if (proxy == nullptr) {
27 LOG_ERROR("proxy is nullptr");
28 return INVALID_VALUE;
29 }
30 return proxy->AddQueryTemplate(uri, subscriberId, tpl);
31 }
32
DelQueryTemplate(const std::string & uri,int64_t subscriberId)33 int PersistentDataController::DelQueryTemplate(const std::string &uri, int64_t subscriberId)
34 {
35 auto proxy = DataShareManagerImpl::GetServiceProxy();
36 if (proxy == nullptr) {
37 LOG_ERROR("proxy is nullptr");
38 return INVALID_VALUE;
39 }
40 return proxy->DelQueryTemplate(uri, subscriberId);
41 }
42
SubscribeRdbData(void * subscriber,const std::vector<std::string> & uris,const TemplateId & templateId,std::function<void (const RdbChangeNode &)> callback)43 std::vector<OperationResult> PersistentDataController::SubscribeRdbData(void *subscriber,
44 const std::vector<std::string> &uris, const TemplateId &templateId,
45 std::function<void(const RdbChangeNode &)> 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 RdbSubscriberManager::GetInstance().AddObservers(subscriber, proxy, uris, templateId, callback);
53 }
54
UnSubscribeRdbData(void * subscriber,const std::vector<std::string> & uris,const TemplateId & templateId)55 std::vector<OperationResult> PersistentDataController::UnSubscribeRdbData(void *subscriber,
56 const std::vector<std::string> &uris, const TemplateId &templateId)
57 {
58 auto proxy = DataShareManagerImpl::GetServiceProxy();
59 if (proxy == nullptr) {
60 LOG_ERROR("proxy is nullptr");
61 return std::vector<OperationResult>();
62 }
63
64 if (uris.empty()) {
65 return RdbSubscriberManager::GetInstance().DelObservers(subscriber, proxy);
66 }
67 return RdbSubscriberManager::GetInstance().DelObservers(subscriber, proxy, uris, templateId);
68 }
69
EnableSubscribeRdbData(void * subscriber,const std::vector<std::string> & uris,const TemplateId & templateId)70 std::vector<OperationResult> PersistentDataController::EnableSubscribeRdbData(void *subscriber,
71 const std::vector<std::string> &uris, const TemplateId &templateId)
72 {
73 auto proxy = DataShareManagerImpl::GetServiceProxy();
74 if (proxy == nullptr) {
75 LOG_ERROR("proxy is nullptr");
76 return std::vector<OperationResult>();
77 }
78 return RdbSubscriberManager::GetInstance().EnableObservers(subscriber, proxy, uris, templateId);
79 }
80
DisableSubscribeRdbData(void * subscriber,const std::vector<std::string> & uris,const TemplateId & templateId)81 std::vector<OperationResult> PersistentDataController::DisableSubscribeRdbData(void *subscriber,
82 const std::vector<std::string> &uris, const TemplateId &templateId)
83 {
84 auto proxy = DataShareManagerImpl::GetServiceProxy();
85 if (proxy == nullptr) {
86 LOG_ERROR("proxy is nullptr");
87 return std::vector<OperationResult>();
88 }
89 return RdbSubscriberManager::GetInstance().DisableObservers(subscriber, proxy, uris, templateId);
90 }
91 } // namespace DataShare
92 } // namespace OHOS
93