From 86d6bf78f839f5d3fac1f5219f6bdae579d89e5f Mon Sep 17 00:00:00 2001 From: li-tiangang4 Date: Sat, 8 Feb 2025 15:29:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9dhardware=E8=BF=9B=E7=A8=8B?= =?UTF-8?q?=E9=A6=96=E6=AC=A1=E8=A2=AB=E6=8B=89=E8=B5=B7=EF=BC=8C=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E4=B8=8A=E7=BA=BF=E5=88=9D=E5=A7=8B=E5=8C=96=E9=87=8D?= =?UTF-8?q?=E5=85=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: li-tiangang4 --- .../distributed_hardware_manager_factory.h | 10 ++++--- .../distributed_hardware_manager_factory.cpp | 26 ++++++++----------- .../accessmanager/access_manager_test.cpp | 5 +--- 3 files changed, 19 insertions(+), 22 deletions(-) diff --git a/services/distributedhardwarefwkservice/include/distributed_hardware_manager_factory.h b/services/distributedhardwarefwkservice/include/distributed_hardware_manager_factory.h index 91c8df2c..c4231312 100644 --- a/services/distributedhardwarefwkservice/include/distributed_hardware_manager_factory.h +++ b/services/distributedhardwarefwkservice/include/distributed_hardware_manager_factory.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2024 Huawei Device Co., Ltd. + * Copyright (c) 2021-2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -25,12 +25,16 @@ namespace OHOS { namespace DistributedHardware { +enum class InitLocalState : uint32_t { + UNINIT, + INITING, + INITED, +}; class DistributedHardwareManagerFactory { DECLARE_SINGLE_INSTANCE(DistributedHardwareManagerFactory); public: bool InitLocalDevInfo(); - bool IsInit(); int32_t SendOnLineEvent(const std::string &networkId, const std::string &uuid, const std::string &udid, uint16_t deviceType, int32_t osType); int32_t SendOffLineEvent(const std::string &networkId, const std::string &uuid, const std::string &udid, @@ -48,8 +52,8 @@ private: void ExitDHFWK(); private: - std::atomic isInit_ = false; std::atomic flagUnInit_ = false; + InitLocalState initLocalStatus_ = InitLocalState::UNINIT; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/distributedhardwarefwkservice/src/distributed_hardware_manager_factory.cpp b/services/distributedhardwarefwkservice/src/distributed_hardware_manager_factory.cpp index e3ba5839..2d3271f9 100644 --- a/services/distributedhardwarefwkservice/src/distributed_hardware_manager_factory.cpp +++ b/services/distributedhardwarefwkservice/src/distributed_hardware_manager_factory.cpp @@ -80,14 +80,15 @@ bool DistributedHardwareManagerFactory::InitLocalDevInfo() bool DistributedHardwareManagerFactory::Init() { DHLOGI("start"); - auto initResult = DistributedHardwareManager::GetInstance().Initialize(); - if (initResult != DH_FWK_SUCCESS) { - DHLOGE("Initialize failed, errCode = %{public}d", initResult); - return false; + if (initLocalStatus_ == InitLocalState::UNINIT) { + initLocalStatus_ = InitLocalState::INITING; + DistributedHardwareManager::GetInstance().Initialize(); + initLocalStatus_ = InitLocalState::INITED; + DHLOGI("success"); + return true; } - isInit_.store(true); - DHLOGI("success"); - return true; + DHLOGE("device Initializing or Initialization completed"); + return false; } void DistributedHardwareManagerFactory::UnInit() @@ -99,7 +100,7 @@ void DistributedHardwareManagerFactory::UnInit() // release all the resources synchronously DistributedHardwareManager::GetInstance().Release(); - isInit_.store(false); + initLocalStatus_ = InitLocalState::UNINIT; flagUnInit_.store(false); DHTraceEnd(); CheckExitSAOrNot(); @@ -149,11 +150,6 @@ void DistributedHardwareManagerFactory::CheckExitSAOrNot() } } -bool DistributedHardwareManagerFactory::IsInit() -{ - return isInit_.load(); -} - int32_t DistributedHardwareManagerFactory::SendOnLineEvent(const std::string &networkId, const std::string &uuid, const std::string &udid, uint16_t deviceType, int32_t osType) { @@ -178,7 +174,7 @@ int32_t DistributedHardwareManagerFactory::SendOnLineEvent(const std::string &ne DHContext::GetInstance().AddOnlineDevice(udid, uuid, networkId); DHContext::GetInstance().AddRealTimeOnlineDeviceNetworkId(networkId); - if (!isInit_.load() && !Init()) { + if (initLocalStatus_ == InitLocalState::UNINIT && !Init()) { DHLOGE("distributedHardwareMgr is null"); return ERR_DH_FWK_HARDWARE_MANAGER_INIT_FAILED; } @@ -208,7 +204,7 @@ int32_t DistributedHardwareManagerFactory::SendOffLineEvent(const std::string &n if (!IsIdLengthValid(networkId) || !IsIdLengthValid(uuid) || !IsIdLengthValid(udid)) { return ERR_DH_FWK_PARA_INVALID; } - if (!isInit_.load() && !Init()) { + if (initLocalStatus_ == InitLocalState::UNINIT && !Init()) { DHLOGE("distributedHardwareMgr is null"); return ERR_DH_FWK_HARDWARE_MANAGER_INIT_FAILED; } diff --git a/services/distributedhardwarefwkservice/test/unittest/common/accessmanager/access_manager_test.cpp b/services/distributedhardwarefwkservice/test/unittest/common/accessmanager/access_manager_test.cpp index bec1707d..32f66563 100644 --- a/services/distributedhardwarefwkservice/test/unittest/common/accessmanager/access_manager_test.cpp +++ b/services/distributedhardwarefwkservice/test/unittest/common/accessmanager/access_manager_test.cpp @@ -47,10 +47,7 @@ public: void TearDown(); }; -void AccessManagerTest::SetUp() -{ - DistributedHardwareManagerFactory::GetInstance().isInit_.store(true); -} +void AccessManagerTest::SetUp() {} void AccessManagerTest::TearDown() {} -- Gitee