From fd9cfa0ef597060799010b56454ad6607bd8da5c Mon Sep 17 00:00:00 2001 From: BrainL Date: Wed, 21 May 2025 08:12:25 +0800 Subject: [PATCH 1/3] review --- .../kits/taihe/include/dm_ani_callback.h | 27 +++++++++-------- interfaces/kits/taihe/src/dm_ani_callback.cpp | 29 ++++++++++++------- .../src/ohos.distributedDeviceManager.cpp | 9 ++++-- 3 files changed, 40 insertions(+), 25 deletions(-) diff --git a/interfaces/kits/taihe/include/dm_ani_callback.h b/interfaces/kits/taihe/include/dm_ani_callback.h index 52174aed..c044497b 100644 --- a/interfaces/kits/taihe/include/dm_ani_callback.h +++ b/interfaces/kits/taihe/include/dm_ani_callback.h @@ -30,18 +30,19 @@ public: explicit DmAniInitCallback(taihe::string_view bundleName); ~DmAniInitCallback() override {} void OnRemoteDied() override; - void SetServiceDieCallback(std::shared_ptr> callback); + void SetServiceDieCallback(std::shared_ptr> callback); void ReleaseServiceDieCallback(); private: std::string bundleName_; - std::shared_ptr> serviceDieCallback_; + std::shared_ptr> serviceDieCallback_; + std::mutex g_dmInitMutex; }; class DmAniDiscoverySuccessCallback : public OHOS::DistributedHardware::DiscoveryCallback { public: explicit DmAniDiscoverySuccessCallback(std::string &bundleName, - taihe::callback_view discoverSuccessCallback); + taihe::callback discoverSuccessCallback); ~DmAniDiscoverySuccessCallback() override {}; void OnDeviceFound(uint16_t subscribeId, const OHOS::DistributedHardware::DmDeviceBasicInfo &deviceBasicInfo) override {} @@ -54,14 +55,15 @@ public: private: std::atomic refCount_; std::string bundleName_; - std::shared_ptr> discoverSuccessCallback_; + std::mutex g_dmDiscoveryMutex; }; class DmAniDiscoveryFailedCallback : public OHOS::DistributedHardware::DiscoveryCallback { public: explicit DmAniDiscoveryFailedCallback(std::string &bundleName, - taihe::callback_view discoverFailedCallback); + taihe::callback discoverFailedCallback); ~DmAniDiscoveryFailedCallback() override {}; void OnDeviceFound(uint16_t subscribeId, const OHOS::DistributedHardware::DmDeviceBasicInfo &deviceBasicInfo) override {} @@ -74,13 +76,14 @@ public: private: std::atomic refCount_; std::string bundleName_; - std::shared_ptr> discoverFailedCallback_; + std::shared_ptr> discoverFailedCallback_; + std::mutex g_dmDiscoveryMutex; }; class DmAniDeviceNameChangeCallback : public OHOS::DistributedHardware::DeviceStatusCallback { public: explicit DmAniDeviceNameChangeCallback(std::string &bundleName, - taihe::callback_view deviceNameChangeCallback); + taihe::callback deviceNameChangeCallback); ~DmAniDeviceNameChangeCallback() override {} void OnDeviceOnline(const OHOS::DistributedHardware::DmDeviceBasicInfo &deviceBasicInfo) override {} void OnDeviceReady(const OHOS::DistributedHardware::DmDeviceBasicInfo &deviceBasicInfo) override {} @@ -89,13 +92,13 @@ public: private: std::string bundleName_; - std::shared_ptr> deviceNameChangeCallback_; + std::shared_ptr> deviceNameChangeCallback_; }; class DmAniDeviceStateChangeDataCallback : public OHOS::DistributedHardware::DeviceStatusCallback { public: explicit DmAniDeviceStateChangeDataCallback(std::string &bundleName, - taihe::callback_view + taihe::callback deviceStateChangeDataCallback); ~DmAniDeviceStateChangeDataCallback() override {} void OnDeviceOnline(const OHOS::DistributedHardware::DmDeviceBasicInfo &deviceBasicInfo) override {} @@ -105,21 +108,21 @@ public: private: std::string bundleName_; - std::shared_ptr> deviceStateChangeDataCallback_; }; class DmAniDeviceManagerUiCallback : public OHOS::DistributedHardware::DeviceManagerUiCallback { public: - explicit DmAniDeviceManagerUiCallback(taihe::callback_view replyResultCallback, + explicit DmAniDeviceManagerUiCallback(taihe::callback replyResultCallback, std::string &bundleName); ~DmAniDeviceManagerUiCallback() override {} void OnCall(const std::string ¶mJson) override; private: std::string bundleName_; - std::shared_ptr> replyResultCallback_; + std::shared_ptr> replyResultCallback_; }; #endif //OHOS_DM_ANI_CALLBACK_H diff --git a/interfaces/kits/taihe/src/dm_ani_callback.cpp b/interfaces/kits/taihe/src/dm_ani_callback.cpp index 6114a13f..803b82cc 100644 --- a/interfaces/kits/taihe/src/dm_ani_callback.cpp +++ b/interfaces/kits/taihe/src/dm_ani_callback.cpp @@ -23,6 +23,7 @@ DmAniInitCallback::DmAniInitCallback(taihe::string_view bundleName) : bundleName_(std::string(bundleName)) { + std::lock_guard autoLock(g_dmInitMutex); serviceDieCallback_ = nullptr; } @@ -34,30 +35,34 @@ void DmAniInitCallback::OnRemoteDied() deviceManager.UnInitDeviceManager(bundleName_); } -void DmAniInitCallback::SetServiceDieCallback(std::shared_ptr> callback) +void DmAniInitCallback::SetServiceDieCallback(std::shared_ptr> callback) { + std::lock_guard autoLock(g_dmInitMutex); serviceDieCallback_ = callback; } void DmAniInitCallback::ReleaseServiceDieCallback() { + std::lock_guard autoLock(g_dmInitMutex); serviceDieCallback_ = nullptr; } DmAniDiscoveryFailedCallback::DmAniDiscoveryFailedCallback(std::string &bundleName, - taihe::callback_view discoverFailedCallback) + taihe::callback discoverFailedCallback) : refCount_(0), bundleName_(bundleName), - discoverFailedCallback_(std::make_shared>(discoverFailedCallback)) + discoverFailedCallback_(std::make_shared>(discoverFailedCallback)) { } void DmAniDiscoveryFailedCallback::IncreaseRefCount() { + std::lock_guard autoLock(g_dmDiscoveryMutex); refCount_++; } void DmAniDiscoveryFailedCallback::DecreaseRefCount() { + std::lock_guard autoLock(g_dmDiscoveryMutex); refCount_--; } @@ -67,20 +72,22 @@ int32_t DmAniDiscoveryFailedCallback::GetRefCount() } DmAniDiscoverySuccessCallback::DmAniDiscoverySuccessCallback(std::string &bundleName, - taihe::callback_view discoverSuccessCallback) + taihe::callback discoverSuccessCallback) : refCount_(0), bundleName_(bundleName), - discoverSuccessCallback_(std::make_shared>(discoverSuccessCallback)) { } void DmAniDiscoverySuccessCallback::IncreaseRefCount() { + std::lock_guard autoLock(g_dmDiscoveryMutex); refCount_++; } void DmAniDiscoverySuccessCallback::DecreaseRefCount() { + std::lock_guard autoLock(g_dmDiscoveryMutex); refCount_--; } @@ -90,9 +97,9 @@ int32_t DmAniDiscoverySuccessCallback::GetRefCount() } DmAniDeviceNameChangeCallback::DmAniDeviceNameChangeCallback(std::string &bundleName, - taihe::callback_view deviceNameChangeCallback) + taihe::callback deviceNameChangeCallback) : bundleName_(bundleName), deviceNameChangeCallback_( - std::make_shared>(deviceNameChangeCallback)) + std::make_shared>(deviceNameChangeCallback)) { } @@ -103,10 +110,10 @@ void DmAniDeviceNameChangeCallback::OnDeviceChanged( } DmAniDeviceStateChangeDataCallback::DmAniDeviceStateChangeDataCallback(std::string &bundleName, - taihe::callback_view + taihe::callback deviceStateChangeDataCallback) : bundleName_(bundleName), - deviceStateChangeDataCallback_(std::make_shared>(deviceStateChangeDataCallback)) { } @@ -118,10 +125,10 @@ void DmAniDeviceStateChangeDataCallback::OnDeviceChanged( } DmAniDeviceManagerUiCallback::DmAniDeviceManagerUiCallback( - taihe::callback_view replyResultCallback, + taihe::callback replyResultCallback, std::string &bundleName) : bundleName_(bundleName), - replyResultCallback_(std::make_shared>(replyResultCallback)) + replyResultCallback_(std::make_shared>(replyResultCallback)) { } diff --git a/interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp b/interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp index cb314149..be23e006 100644 --- a/interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp +++ b/interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp @@ -52,7 +52,12 @@ DeviceManagerImpl::DeviceManagerImpl(const std::string& bundleName) DeviceManagerImpl::DeviceManagerImpl(std::shared_ptr impl) { - bundleName_ = impl->bundleName_; + std::lock_guard autoLock(g_initCallbackMapMutex); + if(impl == nullptr) { + LOGE("Create DeviceManagerImpl for shared_ptr failed."); + } else { + bundleName_ = impl->bundleName_; + } } ohos::distributedDeviceManager::DeviceManager CreateDeviceManager(taihe::string_view bundleName) @@ -450,7 +455,7 @@ void DeviceManagerImpl::OffServiceDie(taihe::optional_view autoLock(g_initCallbackMapMutex); auto iter = g_initCallbackMap.find(bundleName_); - if (iter == g_initCallbackMap.end()) { + if (iter == g_initCallbackMap.end() && iter->second != nullptr) { LOGE("Cannot find ServiceDieCallback for bundleName %{public}s", bundleName_.c_str()); return; } else { -- Gitee From e1a447322ac5f6c9fd8b211d190d47dbb9b25dc8 Mon Sep 17 00:00:00 2001 From: BrainL Date: Wed, 21 May 2025 08:38:37 +0800 Subject: [PATCH 2/3] review --- interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp b/interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp index be23e006..33f8228e 100644 --- a/interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp +++ b/interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp @@ -337,7 +337,7 @@ void DeviceManagerImpl::OffDiscoverFailure(taihe::optional_view DiscoveryCallback = nullptr; + std::shared_ptr discoveryCallback = nullptr; { std::lock_guard autoLock(g_discoveryFailedCallbackMapMutex); auto iter = g_discoveryFailedCallbackMap.find(bundleName_); -- Gitee From 591cd53b80fc0a67f36aea298fa42062201ba804 Mon Sep 17 00:00:00 2001 From: BrainL Date: Wed, 21 May 2025 08:43:33 +0800 Subject: [PATCH 3/3] review --- interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp b/interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp index 33f8228e..19e80d8f 100644 --- a/interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp +++ b/interfaces/kits/taihe/src/ohos.distributedDeviceManager.cpp @@ -344,11 +344,11 @@ void DeviceManagerImpl::OffDiscoverFailure(taihe::optional_viewsecond; + discoveryCallback = iter->second; } - DiscoveryCallback->DecreaseRefCount(); - if (DiscoveryCallback->GetRefCount() == 0) { + discoveryCallback->DecreaseRefCount(); + if (discoveryCallback->GetRefCount() == 0) { std::lock_guard autoLock(g_discoveryFailedCallbackMapMutex); g_discoveryFailedCallbackMap.erase(bundleName_); } -- Gitee