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 #ifndef DATASHARESERVICE_DATA_SHARE_SERVICE_STUB_H 17 #define DATASHARESERVICE_DATA_SHARE_SERVICE_STUB_H 18 19 #include <iremote_stub.h> 20 #include "idata_share_service.h" 21 #include "feature/feature_system.h" 22 namespace OHOS { 23 namespace DataShare { 24 class DataShareServiceStub : public IDataShareService, public DistributedData::FeatureSystem::Feature { 25 public: 26 int OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply) override; 27 void SetServiceReady(); 28 29 private: 30 class QosManager; 31 static constexpr std::chrono::milliseconds TIME_THRESHOLD = std::chrono::milliseconds(500); 32 static bool CheckInterfaceToken(MessageParcel& data); 33 int32_t OnQuery(MessageParcel& data, MessageParcel& reply); 34 int32_t OnAddTemplate(MessageParcel& data, MessageParcel& reply); 35 int32_t OnDelTemplate(MessageParcel& data, MessageParcel& reply); 36 int32_t OnPublish(MessageParcel& data, MessageParcel& reply); 37 int32_t OnGetData(MessageParcel& data, MessageParcel& reply); 38 int32_t OnSubscribeRdbData(MessageParcel& data, MessageParcel& reply); 39 int32_t OnUnsubscribeRdbData(MessageParcel& data, MessageParcel& reply); 40 int32_t OnEnableRdbSubs(MessageParcel& data, MessageParcel& reply); 41 int32_t OnDisableRdbSubs(MessageParcel& data, MessageParcel& reply); 42 int32_t OnSubscribePublishedData(MessageParcel& data, MessageParcel& reply); 43 int32_t OnUnsubscribePublishedData(MessageParcel& data, MessageParcel& reply); 44 int32_t OnEnablePubSubs(MessageParcel& data, MessageParcel& reply); 45 int32_t OnDisablePubSubs(MessageParcel& data, MessageParcel& reply); 46 int32_t OnNotifyConnectDone(MessageParcel& data, MessageParcel& reply); 47 int32_t OnNotifyObserver(MessageParcel& data, MessageParcel& reply); 48 int32_t OnSetSilentSwitch(MessageParcel& data, MessageParcel& reply); 49 int32_t OnGetSilentProxyStatus(MessageParcel& data, MessageParcel& reply); 50 int32_t OnRegisterObserver(MessageParcel& data, MessageParcel& reply); 51 int32_t OnUnregisterObserver(MessageParcel& data, MessageParcel& reply); 52 int32_t OnInsertEx(MessageParcel& data, MessageParcel& reply); 53 int32_t OnUpdateEx(MessageParcel& data, MessageParcel& reply); 54 int32_t OnDeleteEx(MessageParcel& data, MessageParcel& reply); 55 int32_t OnPublishProxyData(MessageParcel& data, MessageParcel& reply); 56 int32_t OnDeleteProxyData(MessageParcel& data, MessageParcel& reply); 57 int32_t OnGetProxyData(MessageParcel& data, MessageParcel& reply); 58 int32_t OnSubscribeProxyData(MessageParcel& data, MessageParcel& reply); 59 int32_t OnUnsubscribeProxyData(MessageParcel& data, MessageParcel& reply); 60 using RequestHandle = int (DataShareServiceStub::*)(MessageParcel &, MessageParcel &); 61 static constexpr RequestHandle HANDLERS[DATA_SHARE_SERVICE_CMD_MAX] = { 62 &DataShareServiceStub::OnQuery, 63 &DataShareServiceStub::OnAddTemplate, 64 &DataShareServiceStub::OnDelTemplate, 65 &DataShareServiceStub::OnPublish, 66 &DataShareServiceStub::OnGetData, 67 &DataShareServiceStub::OnSubscribeRdbData, 68 &DataShareServiceStub::OnUnsubscribeRdbData, 69 &DataShareServiceStub::OnEnableRdbSubs, 70 &DataShareServiceStub::OnDisableRdbSubs, 71 &DataShareServiceStub::OnSubscribePublishedData, 72 &DataShareServiceStub::OnUnsubscribePublishedData, 73 &DataShareServiceStub::OnEnablePubSubs, 74 &DataShareServiceStub::OnDisablePubSubs, 75 &DataShareServiceStub::OnNotifyConnectDone, 76 &DataShareServiceStub::OnNotifyObserver, 77 &DataShareServiceStub::OnSetSilentSwitch, 78 &DataShareServiceStub::OnGetSilentProxyStatus, 79 &DataShareServiceStub::OnRegisterObserver, 80 &DataShareServiceStub::OnUnregisterObserver, 81 &DataShareServiceStub::OnInsertEx, 82 &DataShareServiceStub::OnDeleteEx, 83 &DataShareServiceStub::OnUpdateEx, 84 &DataShareServiceStub::OnPublishProxyData, 85 &DataShareServiceStub::OnDeleteProxyData, 86 &DataShareServiceStub::OnGetProxyData, 87 &DataShareServiceStub::OnSubscribeProxyData, 88 &DataShareServiceStub::OnUnsubscribeProxyData}; 89 static constexpr int SLEEP_TIME = 300; 90 static constexpr int TRY_TIMES = 5; 91 std::atomic<bool> isReady_ = false; 92 }; 93 } // namespace DataShare 94 } // namespace OHOS 95 #endif // DATASHARESERVICE_DATA_SHARE_SERVICE_STUB_H 96