diff --git a/common/utils/include/ihardware_handler.h b/common/utils/include/ihardware_handler.h index 3f6d875..5b8d55f 100644 --- a/common/utils/include/ihardware_handler.h +++ b/common/utils/include/ihardware_handler.h @@ -31,8 +31,8 @@ struct DHItem { class PluginListener { public: - virtual void PluginHardware(std::string dhId, std::string attrs) = 0; - virtual void UnPluginHardware(std::string dhId) = 0; + virtual void PluginHardware(const std::string &dhId, const std::string &attrs) = 0; + virtual void UnPluginHardware(const std::string &dhId) = 0; }; class IHardwareHandler { diff --git a/services/distributedhardwarefwkserviceimpl/include/localhardwaremanager/plugin_listener_impl.h b/services/distributedhardwarefwkserviceimpl/include/localhardwaremanager/plugin_listener_impl.h index c3a543d..a7f6983 100644 --- a/services/distributedhardwarefwkserviceimpl/include/localhardwaremanager/plugin_listener_impl.h +++ b/services/distributedhardwarefwkserviceimpl/include/localhardwaremanager/plugin_listener_impl.h @@ -27,12 +27,12 @@ public: explicit PluginListenerImpl(const DHType type) : dhType_(type) {} virtual ~PluginListenerImpl() = default; - virtual void PluginHardware(std::string dhId, std::string attrs); - virtual void UnPluginHardware(std::string dhId); + virtual void PluginHardware(const std::string &dhId, const std::string &attrs) override; + virtual void UnPluginHardware(const std::string &dhId) override; private: DHType dhType_; }; } // namespace DistributedHardware } // namespace OHOS -#endif \ No newline at end of file +#endif diff --git a/services/distributedhardwarefwkserviceimpl/src/localhardwaremanager/plugin_listener_impl.cpp b/services/distributedhardwarefwkserviceimpl/src/localhardwaremanager/plugin_listener_impl.cpp index 78f54f9..d563a26 100644 --- a/services/distributedhardwarefwkserviceimpl/src/localhardwaremanager/plugin_listener_impl.cpp +++ b/services/distributedhardwarefwkserviceimpl/src/localhardwaremanager/plugin_listener_impl.cpp @@ -17,13 +17,14 @@ #include "capability_info_manager.h" #include "dh_context.h" +#include "distributed_hardware_errno.h" namespace OHOS { namespace DistributedHardware { #undef DH_LOG_TAG #define DH_LOG_TAG "PluginListenerImpl" -void PluginListenerImpl::PluginHardware(std::string dhId, std::string attrs) +void PluginListenerImpl::PluginHardware(const std::string &dhId, const std::string &attrs) { std::vector> capabilityInfos; std::string deviceId = DHContext::GetInstance().GetDeviceInfo().deviceId; @@ -36,10 +37,16 @@ void PluginListenerImpl::PluginHardware(std::string dhId, std::string attrs) CapabilityInfoManager::GetInstance()->AddCapability(capabilityInfos); } -void PluginListenerImpl::UnPluginHardware(std::string dhId) +void PluginListenerImpl::UnPluginHardware(const std::string &dhId) { std::string deviceId = DHContext::GetInstance().GetDeviceInfo().deviceId; - CapabilityInfoManager::GetInstance()->RemoveCapabilityInfoInMem(deviceId); + std::shared_ptr capability = nullptr; + auto ret = CapabilityInfoManager::GetInstance()->GetCapability(deviceId, dhId, capability); + if ((ret != DH_FWK_SUCCESS) || (capability == nullptr)) { + DHLOGE("GetCapability failed, deviceId =%s, dhId = %s, errCode = %d", deviceId.c_str(), dhId.c_str(), ret); + return; + } + CapabilityInfoManager::GetInstance()->RemoveCapabilityInfoByKey(capability->GetKey()); } } // namespace DistributedHardware } // namespace OHOS \ No newline at end of file