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 static constexpr std::chrono::milliseconds TIME_THRESHOLD = std::chrono::milliseconds(500); 31 static bool CheckInterfaceToken(MessageParcel& data); 32 int32_t OnInsert(MessageParcel& data, MessageParcel& reply); 33 int32_t OnUpdate(MessageParcel& data, MessageParcel& reply); 34 int32_t OnDelete(MessageParcel& data, MessageParcel& reply); 35 int32_t OnQuery(MessageParcel& data, MessageParcel& reply); 36 int32_t OnAddTemplate(MessageParcel& data, MessageParcel& reply); 37 int32_t OnDelTemplate(MessageParcel& data, MessageParcel& reply); 38 int32_t OnPublish(MessageParcel& data, MessageParcel& reply); 39 int32_t OnGetData(MessageParcel& data, MessageParcel& reply); 40 int32_t OnSubscribeRdbData(MessageParcel& data, MessageParcel& reply); 41 int32_t OnUnsubscribeRdbData(MessageParcel& data, MessageParcel& reply); 42 int32_t OnEnableRdbSubs(MessageParcel& data, MessageParcel& reply); 43 int32_t OnDisableRdbSubs(MessageParcel& data, MessageParcel& reply); 44 int32_t OnSubscribePublishedData(MessageParcel& data, MessageParcel& reply); 45 int32_t OnUnsubscribePublishedData(MessageParcel& data, MessageParcel& reply); 46 int32_t OnEnablePubSubs(MessageParcel& data, MessageParcel& reply); 47 int32_t OnDisablePubSubs(MessageParcel& data, MessageParcel& reply); 48 int32_t OnNotifyConnectDone(MessageParcel& data, MessageParcel& reply); 49 int32_t OnNotifyObserver(MessageParcel& data, MessageParcel& reply); 50 int32_t OnSetSilentSwitch(MessageParcel& data, MessageParcel& reply); 51 int32_t OnGetSilentProxyStatus(MessageParcel& data, MessageParcel& reply); 52 int32_t OnRegisterObserver(MessageParcel& data, MessageParcel& reply); 53 int32_t OnUnregisterObserver(MessageParcel& data, MessageParcel& reply); 54 int32_t OnInsertEx(MessageParcel& data, MessageParcel& reply); 55 int32_t OnUpdateEx(MessageParcel& data, MessageParcel& reply); 56 int32_t OnDeleteEx(MessageParcel& data, MessageParcel& reply); 57 using RequestHandle = int (DataShareServiceStub::*)(MessageParcel &, MessageParcel &); 58 static constexpr RequestHandle HANDLERS[DATA_SHARE_SERVICE_CMD_MAX] = { 59 &DataShareServiceStub::OnInsert, 60 &DataShareServiceStub::OnDelete, 61 &DataShareServiceStub::OnUpdate, 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 static constexpr int SLEEP_TIME = 300; 85 static constexpr int TRY_TIMES = 5; 86 std::atomic<bool> isReady_ = false; 87 }; 88 } // namespace DataShare 89 } // namespace OHOS 90 #endif // DATASHARESERVICE_DATA_SHARE_SERVICE_STUB_H 91