1 /* 2 * Copyright (c) 2022 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 HEARTBEAT_STRATEGY_H 17 #define HEARTBEAT_STRATEGY_H 18 19 #include "auth_manager.h" 20 #include "auth_hichain_adapter.h" 21 #include "lnn_async_callback_utils.h" 22 #include "lnn_device_info_recovery.h" 23 #include "lnn_heartbeat_strategy.h" 24 #include "lnn_net_builder.h" 25 #include <gmock/gmock.h> 26 #include <mutex> 27 28 namespace OHOS { 29 class HeartBeatStategyInterface { 30 public: HeartBeatStategyInterface()31 HeartBeatStategyInterface() {}; ~HeartBeatStategyInterface()32 virtual ~HeartBeatStategyInterface() {}; 33 34 virtual int32_t LnnStartOfflineTimingStrategy(const char *networkId, ConnectionAddrType addrType) = 0; 35 virtual int32_t LnnStopOfflineTimingStrategy(const char *networkId, ConnectionAddrType addrType) = 0; 36 virtual int32_t LnnNotifyDiscoveryDevice(const ConnectionAddr *addr, const LnnDfxDeviceInfoReport *infoReport, 37 bool isNeedConnect) = 0; 38 virtual int32_t LnnSetHbAsMasterNodeState(bool isMasterNode) = 0; 39 virtual int32_t LnnNotifyMasterElect(const char *networkId, const char *masterUdid, int32_t masterWeight) = 0; 40 virtual int32_t LnnStartHbByTypeAndStrategy( 41 LnnHeartbeatType hbType, LnnHeartbeatStrategyType strategyType, bool isRelay) = 0; 42 virtual int32_t LnnRequestLeaveSpecific(const char *networkId, ConnectionAddrType addrType) = 0; 43 virtual AuthVerifyCallback *LnnGetReAuthVerifyCallback(void) = 0; 44 virtual int32_t LnnSetGearModeBySpecificType(const char *callerId, const GearMode *mode, 45 LnnHeartbeatType type) = 0; 46 virtual int32_t LnnEnableHeartbeatByType(LnnHeartbeatType type, bool isEnable) = 0; 47 virtual int32_t LnnStopHeartbeatByType(LnnHeartbeatType type) = 0; 48 virtual int32_t LnnHbStrategyInit(void) = 0; 49 virtual int32_t LnnUpdateSendInfoStrategy(LnnHeartbeatUpdateInfoType type) = 0; 50 virtual int32_t LnnStopScreenChangeOfflineTiming(const char *networkId, ConnectionAddrType addrType) = 0; 51 virtual int32_t LnnSetMediumParamBySpecificType(const LnnHeartbeatMediumParam *param) = 0; 52 virtual int32_t LnnStartScreenChangeOfflineTiming(const char *networkId, ConnectionAddrType addrType) = 0; 53 virtual int32_t LnnStopHeartBeatAdvByTypeNow(LnnHeartbeatType registedHbType) = 0; 54 virtual int32_t LnnAsyncCallbackDelayHelper(SoftBusLooper *looper, LnnAsyncCallbackFunc callback, 55 void *para, uint64_t delayMillis) = 0; 56 virtual int32_t LnnStartHeartbeat(uint64_t delayMillis) = 0; 57 virtual bool IsNeedAuthLimit(const char *udidHash) = 0; 58 virtual bool IsExistLnnDfxNodeByUdidHash(const char *udidHash, LnnBleReportExtra *bleExtra) = 0; 59 virtual int32_t LnnRetrieveDeviceInfo(const char *udid, NodeInfo *deviceInfo) = 0; 60 virtual bool IsSameAccountGroupDevice(void) = 0; 61 virtual uint32_t AuthGenRequestId(void) = 0; 62 virtual int32_t AuthStartVerify(const AuthConnInfo *connInfo, uint32_t requestId, 63 const AuthVerifyCallback *verifyCallback, AuthVerifyModule module, bool isFastAuth) = 0; 64 virtual void AddNodeToLnnBleReportExtraMap(const char *udidHash, const LnnBleReportExtra *bleExtra) = 0; 65 virtual int32_t GetNodeFromLnnBleReportExtraMap(const char *udidHash, LnnBleReportExtra *bleExtra) = 0; 66 virtual void DeleteNodeFromLnnBleReportExtraMap(const char *udidHash) = 0; 67 virtual int32_t LnnUpdateRemoteDeviceInfo(const NodeInfo *deviceInfo) = 0; 68 virtual int32_t GetNodeFromPcRestrictMap(const char *udidHash, uint32_t *count) = 0; 69 }; 70 class HeartBeatStategyInterfaceMock : public HeartBeatStategyInterface { 71 public: 72 HeartBeatStategyInterfaceMock(); 73 ~HeartBeatStategyInterfaceMock() override; 74 75 MOCK_METHOD2(LnnStartOfflineTimingStrategy, int32_t(const char *, ConnectionAddrType)); 76 MOCK_METHOD2(LnnStopOfflineTimingStrategy, int32_t(const char *, ConnectionAddrType)); 77 MOCK_METHOD3(LnnNotifyDiscoveryDevice, int32_t(const ConnectionAddr *, const LnnDfxDeviceInfoReport *, bool)); 78 MOCK_METHOD3(LnnNotifyMasterElect, int32_t(const char *, const char *, int32_t)); 79 MOCK_METHOD1(LnnSetHbAsMasterNodeState, int32_t(bool)); 80 MOCK_METHOD3(LnnStartHbByTypeAndStrategy, int32_t (LnnHeartbeatType, LnnHeartbeatStrategyType, bool)); 81 MOCK_METHOD2(LnnRequestLeaveSpecific, int32_t (const char *, ConnectionAddrType)); 82 MOCK_METHOD0(LnnGetReAuthVerifyCallback, AuthVerifyCallback * (void)); 83 MOCK_METHOD3(LnnSetGearModeBySpecificType, int32_t (const char *, const GearMode *, LnnHeartbeatType)); 84 MOCK_METHOD2(LnnEnableHeartbeatByType, int32_t (LnnHeartbeatType, bool)); 85 MOCK_METHOD1(LnnStopHeartbeatByType, int32_t (LnnHeartbeatType)); 86 MOCK_METHOD0(LnnHbStrategyInit, int32_t (void)); 87 MOCK_METHOD1(LnnUpdateSendInfoStrategy, int32_t (LnnHeartbeatUpdateInfoType)); 88 MOCK_METHOD2(LnnStopScreenChangeOfflineTiming, int32_t (const char *, ConnectionAddrType)); 89 MOCK_METHOD1(LnnSetMediumParamBySpecificType, int32_t (const LnnHeartbeatMediumParam *)); 90 MOCK_METHOD2(LnnStartScreenChangeOfflineTiming, int32_t (const char *, ConnectionAddrType)); 91 MOCK_METHOD1(LnnStopHeartBeatAdvByTypeNow, int32_t (LnnHeartbeatType)); 92 MOCK_METHOD4(LnnAsyncCallbackDelayHelper, int32_t(SoftBusLooper *, LnnAsyncCallbackFunc, void *, uint64_t)); 93 MOCK_METHOD1(LnnStartHeartbeat, int32_t(uint64_t)); 94 MOCK_METHOD1(IsNeedAuthLimit, bool(const char *)); 95 MOCK_METHOD2(IsExistLnnDfxNodeByUdidHash, bool(const char *, LnnBleReportExtra *)); 96 MOCK_METHOD2(LnnRetrieveDeviceInfo, int32_t (const char *, NodeInfo *)); 97 MOCK_METHOD0(IsSameAccountGroupDevice, bool (void)); 98 MOCK_METHOD0(AuthGenRequestId, uint32_t (void)); 99 MOCK_METHOD5(AuthStartVerify, int32_t (const AuthConnInfo *, uint32_t, const AuthVerifyCallback *, 100 AuthVerifyModule, bool)); 101 MOCK_METHOD2(AddNodeToLnnBleReportExtraMap, void (const char *, const LnnBleReportExtra *)); 102 MOCK_METHOD2(GetNodeFromLnnBleReportExtraMap, int32_t (const char *, LnnBleReportExtra *)); 103 MOCK_METHOD1(DeleteNodeFromLnnBleReportExtraMap, void (const char *)); 104 MOCK_METHOD1(LnnUpdateRemoteDeviceInfo, int32_t (const NodeInfo *)); 105 MOCK_METHOD2(GetNodeFromPcRestrictMap, int32_t (const char *, uint32_t *)); 106 }; 107 } // namespace OHOS 108 #endif // HEARTBEAT_STRATEGY_H 109