diff --git a/interfaces/inner_kits/src/ipc/dhfwk_sa_manager.cpp b/interfaces/inner_kits/src/ipc/dhfwk_sa_manager.cpp index 78c24914b2e6a828d11102c4229c69c8538235af..8c59788e7378774c5b675b7973dfcee45766aaee 100644 --- a/interfaces/inner_kits/src/ipc/dhfwk_sa_manager.cpp +++ b/interfaces/inner_kits/src/ipc/dhfwk_sa_manager.cpp @@ -192,6 +192,10 @@ int32_t DHFWKSAManager::AddPublisherListenerToCache(const DHTopic topic, sptr listener) { std::lock_guard publisherListenersLock(publisherListenersMutex_); + if (publisherListenersCache_.find(topic) == publisherListenersCache_.end()) { + DHLOGE("Can not find the topic: %{public}u In publisherListenersCache_.", static_cast(topic)); + return; + } publisherListenersCache_[topic].erase(listener); } @@ -205,6 +209,10 @@ void DHFWKSAManager::AddAVTransControlCenterCbToCache(int32_t engineId, void DHFWKSAManager::RemoveAVTransControlCenterCbFromCache(int32_t engineId) { std::lock_guard avTransControlCenterCbLock(avTransControlCenterCbMutex_); + if (avTransControlCenterCbCache_.find(engineId) == avTransControlCenterCbCache_.end()) { + DHLOGE("Can not find engineId: %{public}d In avTransControlCenterCbCache_.", engineId); + return; + } avTransControlCenterCbCache_.erase(engineId); } } // DistributedHardware diff --git a/interfaces/inner_kits/test/unittest/common/distributedhardwarefwkkit/src/distributed_hardware_fwk_kit_test.cpp b/interfaces/inner_kits/test/unittest/common/distributedhardwarefwkkit/src/distributed_hardware_fwk_kit_test.cpp index e6b8961fc56a85ab9f7867e8a5069f4fe39786bd..5ea0a52f134b89ffa8ae8da734a78c2d53629292 100644 --- a/interfaces/inner_kits/test/unittest/common/distributedhardwarefwkkit/src/distributed_hardware_fwk_kit_test.cpp +++ b/interfaces/inner_kits/test/unittest/common/distributedhardwarefwkkit/src/distributed_hardware_fwk_kit_test.cpp @@ -70,6 +70,9 @@ void DistributedHardwareFwkKitTest::TestPublisherListener::OnMessage(const DHTop uint32_t DistributedHardwareFwkKitTest::TestPublisherListener::GetTopicMsgCnt(const DHTopic topic) { std::lock_guard lock(mutex_); + if (msgCnts_.find(topic) == msgCnts_.end()) { + return 0; + } return msgCnts_[topic]; } diff --git a/services/distributedhardwarefwkservice/src/publisher/publisher.cpp b/services/distributedhardwarefwkservice/src/publisher/publisher.cpp index e5a9729e6ed546339c9af26c81ecf161d4614ede..7cb5510d52e1369c8681b44b42b8ea9b3890b154 100644 --- a/services/distributedhardwarefwkservice/src/publisher/publisher.cpp +++ b/services/distributedhardwarefwkservice/src/publisher/publisher.cpp @@ -15,6 +15,8 @@ #include "publisher.h" +#include "distributed_hardware_log.h" + namespace OHOS { namespace DistributedHardware { IMPLEMENT_SINGLE_INSTANCE(Publisher); @@ -38,16 +40,28 @@ Publisher::~Publisher() void Publisher::RegisterListener(const DHTopic topic, const sptr listener) { + if (publisherItems_.find(topic) == publisherItems_.end()) { + DHLOGE("The topic: %{public}u is not exist.", static_cast(topic)); + return; + } publisherItems_[topic]->AddListener(listener); } void Publisher::UnregisterListener(const DHTopic topic, const sptr listener) { + if (publisherItems_.find(topic) == publisherItems_.end()) { + DHLOGE("The topic: %{public}u is not exist.", static_cast(topic)); + return; + } publisherItems_[topic]->RemoveListener(listener); } void Publisher::PublishMessage(const DHTopic topic, const std::string &message) { + if (publisherItems_.find(topic) == publisherItems_.end()) { + DHLOGE("The topic: %{public}u is not exist.", static_cast(topic)); + return; + } publisherItems_[topic]->PublishMessage(message); } } // namespace DistributedHardware diff --git a/services/distributedhardwarefwkservice/src/resourcemanager/capability_info_manager.cpp b/services/distributedhardwarefwkservice/src/resourcemanager/capability_info_manager.cpp index 6f83fc1e50565e504ed0779692ac30fee9906e01..9474090ec6637b852b3673cfbbe2a2064e70136f 100644 --- a/services/distributedhardwarefwkservice/src/resourcemanager/capability_info_manager.cpp +++ b/services/distributedhardwarefwkservice/src/resourcemanager/capability_info_manager.cpp @@ -283,7 +283,9 @@ int32_t CapabilityInfoManager::RemoveCapabilityInfoByKey(const std::string &key) return ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL; } // 1. Clear the cache in the memory. - globalCapInfoMap_.erase(key); + if (globalCapInfoMap_.find(key) != globalCapInfoMap_.end()) { + globalCapInfoMap_.erase(key); + } // 2. Delete the corresponding record from the database.(use key) if (dbAdapterPtr_->RemoveDataByKey(key) != DH_FWK_SUCCESS) { @@ -491,6 +493,10 @@ void CapabilityInfoManager::HandleCapabilityDeleteChange(const std::vectorGetAnonymousKey().c_str()); + if (globalCapInfoMap_.find(keyString) == globalCapInfoMap_.end()) { + DHLOGE("Can not find key In globalCapInfoMap_."); + continue; + } globalCapInfoMap_.erase(keyString); } } diff --git a/services/distributedhardwarefwkservice/src/resourcemanager/local_capability_info_manager.cpp b/services/distributedhardwarefwkservice/src/resourcemanager/local_capability_info_manager.cpp index a13809c527cdf92eedbdf05bf753a4808bf7ee16..bf021cd31a851aceb0a87f3eb5c8138bdabe668b 100644 --- a/services/distributedhardwarefwkservice/src/resourcemanager/local_capability_info_manager.cpp +++ b/services/distributedhardwarefwkservice/src/resourcemanager/local_capability_info_manager.cpp @@ -155,7 +155,9 @@ int32_t LocalCapabilityInfoManager::RemoveCapabilityInfoByKey(const std::string return ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL; } // 1. Clear the cache in the memory. - globalCapInfoMap_.erase(key); + if (globalCapInfoMap_.find(key) != globalCapInfoMap_.end()) { + globalCapInfoMap_.erase(key); + } // 2. Delete the corresponding record from the database.(use key) if (dbAdapterPtr_->RemoveDataByKey(key) != DH_FWK_SUCCESS) { diff --git a/services/distributedhardwarefwkservice/src/resourcemanager/meta_info_manager.cpp b/services/distributedhardwarefwkservice/src/resourcemanager/meta_info_manager.cpp index 72847a16a4af261d8b259f6332b028e9b3cbb114..0c9433e5e78dd3697f46290fa0f04b4aaedd09a6 100644 --- a/services/distributedhardwarefwkservice/src/resourcemanager/meta_info_manager.cpp +++ b/services/distributedhardwarefwkservice/src/resourcemanager/meta_info_manager.cpp @@ -261,8 +261,9 @@ int32_t MetaInfoManager::RemoveMetaInfoByKey(const std::string &key) DHLOGE("dbAdapterPtr_ is null"); return ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL; } - - globalMetaInfoMap_.erase(key); + if (globalMetaInfoMap_.find(key) != globalMetaInfoMap_.end()) { + globalMetaInfoMap_.erase(key); + } if (dbAdapterPtr_->RemoveDataByKey(key) != DH_FWK_SUCCESS) { DHLOGE("Remove device metaData failed, key: %{public}s", GetAnonyString(key).c_str()); return ERR_DH_FWK_RESOURCE_DB_ADAPTER_OPERATION_FAIL; @@ -503,6 +504,10 @@ void MetaInfoManager::HandleMetaCapabilityDeleteChange(const std::vectorGetKey(); DHLOGI("Delete MetaCapability key: %{public}s", capPtr->GetAnonymousKey().c_str()); + if (globalMetaInfoMap_.find(keyString) == globalMetaInfoMap_.end()) { + DHLOGE("Can not find key In globalMetaInfoMap_."); + continue; + } globalMetaInfoMap_.erase(keyString); } } diff --git a/services/distributedhardwarefwkservice/src/task/offline_task.cpp b/services/distributedhardwarefwkservice/src/task/offline_task.cpp index be7b89b4c14111c43932287e278f8d4fc6e29418..3c102803bcedd39459892fb54633b08ee86db910 100644 --- a/services/distributedhardwarefwkservice/src/task/offline_task.cpp +++ b/services/distributedhardwarefwkservice/src/task/offline_task.cpp @@ -165,6 +165,10 @@ void OffLineTask::NotifyFatherFinish(std::string taskId) { { std::lock_guard lock(unFinishTaskMtx_); + if (this->unFinishChildrenTasks_.find(taskId) == this->unFinishChildrenTasks_.end()) { + DHLOGE("Can not find taskId: %{public}s", taskId.c_str()); + return; + } this->unFinishChildrenTasks_.erase(taskId); } finishCondVar_.notify_all(); diff --git a/services/distributedhardwarefwkservice/src/task/task_board.cpp b/services/distributedhardwarefwkservice/src/task/task_board.cpp index 08c028a9fb07ecbd675f3e08944d27f95aad4268..4ba2892c973e044dccf5e9cc6a2ecc7e25fdcb6c 100644 --- a/services/distributedhardwarefwkservice/src/task/task_board.cpp +++ b/services/distributedhardwarefwkservice/src/task/task_board.cpp @@ -117,6 +117,10 @@ void TaskBoard::RemoveEnabledDevice(const std::string &enabledDeviceKey) { std::lock_guard lock(enabledDevicesMutex_); DHLOGI("RemoveEnabledDevice key is %{public}s", GetAnonyString(enabledDeviceKey).c_str()); + if (enabledDevices_.find(enabledDeviceKey) == enabledDevices_.end()) { + DHLOGE("enabledDeviceKey is not exist."); + return; + } enabledDevices_.erase(enabledDeviceKey); } diff --git a/services/distributedhardwarefwkservice/src/transport/dh_transport.cpp b/services/distributedhardwarefwkservice/src/transport/dh_transport.cpp index c4f9036394ca8cafed8c20e002e95bc249d89bdb..6b2ba7c89e32dcd29cd7c0925da66339127abe7d 100644 --- a/services/distributedhardwarefwkservice/src/transport/dh_transport.cpp +++ b/services/distributedhardwarefwkservice/src/transport/dh_transport.cpp @@ -347,6 +347,10 @@ void DHTransport::ClearDeviceSocketOpened(const std::string &remoteDevId) return; } std::lock_guard lock(rmtSocketIdMtx_); + if (remoteDevSocketIds_.find(remoteDevId) == remoteDevSocketIds_.end()) { + DHLOGE("Can not find remoteDevId: %{public}s In remoteDevSocketIds_.", GetAnonyString(remoteDevId).c_str()); + return; + } remoteDevSocketIds_.erase(remoteDevId); } diff --git a/services/distributedhardwarefwkservice/src/utils/dh_context.cpp b/services/distributedhardwarefwkservice/src/utils/dh_context.cpp index 4ff2d633a890d85cce143b251bd56fe0db9f3745..ed0ff27b86dce2b30286aa9dde550cfcb06a8666 100644 --- a/services/distributedhardwarefwkservice/src/utils/dh_context.cpp +++ b/services/distributedhardwarefwkservice/src/utils/dh_context.cpp @@ -289,6 +289,10 @@ void DHContext::DeleteRealTimeOnlineDeviceNetworkId(const std::string &networkId { DHLOGI("DeleteRealTimeOnlineDeviceNetworkId: %{public}s", GetAnonyString(networkId).c_str()); std::shared_lock lock(realTimeNetworkIdMutex_); + if (realTimeOnLineNetworkIdSet_.find(networkId) == realTimeOnLineNetworkIdSet_.end()) { + DHLOGE("The networkId is not exist"); + return; + } realTimeOnLineNetworkIdSet_.erase(networkId); } @@ -364,7 +368,7 @@ void DHContext::DelIsomerismConnectDev(const std::string &IsomerismDeviceId) DHLOGI("DelIsomerismConnectDev id = %{public}s", GetAnonyString(IsomerismDeviceId).c_str()); std::shared_lock lock(connectDevMutex_); if (connectedDevIds_.find(IsomerismDeviceId) == connectedDevIds_.end()) { - DHLOGI("DelIsomerismConnectDev is not exist."); + DHLOGE("DelIsomerismConnectDev is not exist."); return; } connectedDevIds_.erase(IsomerismDeviceId);