From edbd6d33617bd910200d1f3928e268b43598e253 Mon Sep 17 00:00:00 2001 From: tangfan Date: Sat, 3 Sep 2022 17:11:22 +0800 Subject: [PATCH] fix AddCapability logic Signed-off-by: tangfan --- .../src/distributed_hardware_manager.cpp | 20 +++++++++---------- .../capability_info_manager.cpp | 7 ++++++- .../src/resourcemanager/db_adapter.cpp | 4 ++++ 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/services/distributedhardwarefwkservice/src/distributed_hardware_manager.cpp b/services/distributedhardwarefwkservice/src/distributed_hardware_manager.cpp index ff4cbc92..99741678 100644 --- a/services/distributedhardwarefwkservice/src/distributed_hardware_manager.cpp +++ b/services/distributedhardwarefwkservice/src/distributed_hardware_manager.cpp @@ -54,18 +54,18 @@ IMPLEMENT_SINGLE_INSTANCE(DistributedHardwareManager); int32_t DistributedHardwareManager::Initialize() { DHLOGI("start"); - CapabilityInfoManager::GetInstance()->Init(); - VersionInfoManager::GetInstance()->Init(); ComponentLoader::GetInstance().Init(); - LocalHardwareManager::GetInstance().Init(); - VersionManager::GetInstance().Init(); ComponentManager::GetInstance().Init(); + CapabilityInfoManager::GetInstance()->Init(); + + LocalHardwareManager::GetInstance().Init(); + return DH_FWK_SUCCESS; } @@ -74,18 +74,18 @@ int32_t DistributedHardwareManager::Release() DHLOGI("start"); TaskBoard::GetInstance().WaitForALLTaskFinish(); - ComponentManager::GetInstance().UnInit(); - - VersionManager::GetInstance().UnInit(); - - LocalHardwareManager::GetInstance().UnInit(); + VersionInfoManager::GetInstance()->UnInit(); ComponentLoader::GetInstance().UnInit(); - VersionInfoManager::GetInstance()->UnInit(); + VersionManager::GetInstance().UnInit(); + + ComponentManager::GetInstance().UnInit(); CapabilityInfoManager::GetInstance()->UnInit(); + LocalHardwareManager::GetInstance().UnInit(); + return DH_FWK_SUCCESS; } diff --git a/services/distributedhardwarefwkservice/src/resourcemanager/capability_info_manager.cpp b/services/distributedhardwarefwkservice/src/resourcemanager/capability_info_manager.cpp index 4d89d592..6fd358d6 100644 --- a/services/distributedhardwarefwkservice/src/resourcemanager/capability_info_manager.cpp +++ b/services/distributedhardwarefwkservice/src/resourcemanager/capability_info_manager.cpp @@ -149,15 +149,20 @@ int32_t CapabilityInfoManager::AddCapability(const std::vector keys; std::vector values; + std::string data; for (auto &resInfo : resInfos) { if (!resInfo) { continue; } const std::string key = resInfo->GetKey(); + globalCapInfoMap_[key] = resInfo; + if (dbAdapterPtr_->GetDataByKey(key, data) == DH_FWK_SUCCESS && data.compare(resInfo->ToJsonString())) { + DHLOGD("this record is exist, Key: %s", resInfo->GetAnonymousKey().c_str()); + continue; + } DHLOGI("AddCapability, Key: %s", resInfo->GetAnonymousKey().c_str()); keys.push_back(key); values.push_back(resInfo->ToJsonString()); - globalCapInfoMap_[key] = resInfo; } if (dbAdapterPtr_->PutDataBatch(keys, values) != DH_FWK_SUCCESS) { DHLOGE("Fail to storage batch to kv"); diff --git a/services/distributedhardwarefwkservice/src/resourcemanager/db_adapter.cpp b/services/distributedhardwarefwkservice/src/resourcemanager/db_adapter.cpp index 534c2fe0..6ad75766 100644 --- a/services/distributedhardwarefwkservice/src/resourcemanager/db_adapter.cpp +++ b/services/distributedhardwarefwkservice/src/resourcemanager/db_adapter.cpp @@ -222,6 +222,10 @@ int32_t DBAdapter::PutDataBatch(const std::vector &keys, const std: DHLOGE("Param invalid"); return ERR_DH_FWK_PARA_INVALID; } + if (values.empty()) { + DHLOGE("values is empty!"); + return ERR_DH_FWK_PARA_INVALID; + } std::vector entries; for (unsigned long i = 0; i < keys.size(); i++) { DistributedKv::Entry entry; -- Gitee