From 762ae910ee4c2d812b20afcb1e6480f53acbcfaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B7=8D?= Date: Thu, 8 May 2025 20:30:48 +0800 Subject: [PATCH 1/3] =?UTF-8?q?online=E4=B8=8Eonchange=E7=A2=B0=E6=92=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李巍 --- .../dependency/softbus/softbus_connector.h | 5 ++++ .../dependency/softbus/softbus_connector.cpp | 26 +++++++++++++++++-- .../src/device_manager_service_impl.cpp | 2 +- .../devicestate/dm_device_state_manager.cpp | 7 ++++- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/services/implementation/include/dependency/softbus/softbus_connector.h b/services/implementation/include/dependency/softbus/softbus_connector.h index 61a3fb1ae..be6e0468b 100644 --- a/services/implementation/include/dependency/softbus/softbus_connector.h +++ b/services/implementation/include/dependency/softbus/softbus_connector.h @@ -135,6 +135,9 @@ public: void SetProcessInfoVec(std::vector processInfoVec); std::vector GetProcessInfo(); void ClearProcessInfo(); + void SetChangeProcessInfo(ProcessInfo processInfo); + std::vector GetChangeProcessInfo(); + void ClearChangeProcessInfo(); DmDeviceInfo GetDeviceInfoByDeviceId(const std::string &deviceId); void DeleteOffLineTimer(std::string &udidHash); void SyncAclList(int32_t userId, std::string credId, int32_t sessionKeyId, int32_t aclId); @@ -168,9 +171,11 @@ private: std::shared_ptr deviceStateManagerCallback_; static std::unordered_map deviceUdidMap_; static std::vector processInfoVec_; + static std::vector processChangeInfoVec_; static std::mutex discoveryDeviceInfoMutex_; static std::mutex deviceUdidLocks_; static std::mutex processInfoVecMutex_; + static std::mutex processChangeInfoVecMutex_; static std::shared_ptr connectorCallback_; }; } // namespace DistributedHardware diff --git a/services/implementation/src/dependency/softbus/softbus_connector.cpp b/services/implementation/src/dependency/softbus/softbus_connector.cpp index 70774a429..ad7e60af2 100644 --- a/services/implementation/src/dependency/softbus/softbus_connector.cpp +++ b/services/implementation/src/dependency/softbus/softbus_connector.cpp @@ -683,18 +683,40 @@ void SoftbusConnector::SetProcessInfoVec(std::vector processInfoVec std::vector SoftbusConnector::GetProcessInfo() { - LOGI("In"); + LOGI("SoftbusConnector::GetProcessInfo"); std::lock_guard lock(processInfoVecMutex_); return processInfoVec_; } void SoftbusConnector::ClearProcessInfo() { - LOGI("In"); + LOGI("SoftbusConnector::ClearProcessInfo"); std::lock_guard lock(processInfoVecMutex_); processInfoVec_.clear(); } +void SoftbusConnector::SetChangeProcessInfo(ProcessInfo processInfo) +{ + LOGI("SoftbusConnector::SetChangeProcessInfo"); + std::lock_guard lock(processChangeInfoVecMutex_); + processChangeInfoVec_.push_back(processInfo); +} + +std::vector SoftbusConnector::GetChangeProcessInfo() +{ + LOGI("SoftbusConnector::GetChangeProcessInfo"); + std::lock_guard lock(processChangeInfoVecMutex_); + return processChangeInfoVec_; +} + +void SoftbusConnector::ClearChangeProcessInfo() +{ + LOGI("SoftbusConnector::ClearChangeProcessInfo"); + std::lock_guard lock(processChangeInfoVecMutex_); + processChangeInfoVec_.clear(); +} + + void SoftbusConnector::HandleDeviceOnline(std::string deviceId, int32_t authForm) { LOGI("SoftbusConnector::HandleDeviceOnline"); diff --git a/services/implementation/src/device_manager_service_impl.cpp b/services/implementation/src/device_manager_service_impl.cpp index 816260c03..47e88bcfb 100644 --- a/services/implementation/src/device_manager_service_impl.cpp +++ b/services/implementation/src/device_manager_service_impl.cpp @@ -735,7 +735,7 @@ void DeviceManagerServiceImpl::HandleDeviceStatusChange(DmDeviceState devState, ProcessInfo processInfo; processInfo.pkgName = std::string(DM_PKG_NAME); processInfo.userId = MultipleUserConnector::GetFirstForegroundUserId(); - softbusConnector_->SetProcessInfo(processInfo); + softbusConnector_->SetChangeProcessInfo(processInfo); deviceStateMgr_->HandleDeviceStatusChange(devState, devInfo); } } diff --git a/services/implementation/src/devicestate/dm_device_state_manager.cpp b/services/implementation/src/devicestate/dm_device_state_manager.cpp index fc1b99b73..1871b15b3 100644 --- a/services/implementation/src/devicestate/dm_device_state_manager.cpp +++ b/services/implementation/src/devicestate/dm_device_state_manager.cpp @@ -175,7 +175,12 @@ void DmDeviceStateManager::ProcessDeviceStateChange(const DmDeviceState devState GetAnonyString(devInfo.networkId).c_str()); CHECK_NULL_VOID(softbusConnector_); CHECK_NULL_VOID(listener_); - std::vector processInfoVec = softbusConnector_->GetProcessInfo(); + std::vector processInfoVec; + if (devState == DEVICE_INFO_CHANGED) { + processInfoVec = softbusConnector_->GetChangeProcessInfo(); + } else { + processInfoVec = softbusConnector_->GetProcessInfo(); + } for (const auto &item : processInfoVec) { if (!item.pkgName.empty()) { LOGI("ProcessDeviceStateChange, pkgName = %{public}s", item.pkgName.c_str()); -- Gitee From 82e682ac5c2837092e9991984f148eee2ea3fb85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B7=8D?= Date: Thu, 8 May 2025 20:36:50 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李巍 --- .../src/dependency/softbus/softbus_connector.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/implementation/src/dependency/softbus/softbus_connector.cpp b/services/implementation/src/dependency/softbus/softbus_connector.cpp index ad7e60af2..df2d1e411 100644 --- a/services/implementation/src/dependency/softbus/softbus_connector.cpp +++ b/services/implementation/src/dependency/softbus/softbus_connector.cpp @@ -54,9 +54,11 @@ std::string SoftbusConnector::remoteUdidHash_ = ""; std::map> SoftbusConnector::discoveryDeviceInfoMap_ = {}; std::unordered_map SoftbusConnector::deviceUdidMap_ = {}; std::vector SoftbusConnector::processInfoVec_ = {}; +std::vector SoftbusConnector::processChangeInfoVec_ = {}; std::mutex SoftbusConnector::discoveryDeviceInfoMutex_; std::mutex SoftbusConnector::deviceUdidLocks_; std::mutex SoftbusConnector::processInfoVecMutex_; +std::mutex SoftbusConnector::processChangeInfoVecMutex_; std::shared_ptr SoftbusConnector::connectorCallback_ = nullptr; SoftbusConnector::SoftbusConnector() @@ -716,7 +718,6 @@ void SoftbusConnector::ClearChangeProcessInfo() processChangeInfoVec_.clear(); } - void SoftbusConnector::HandleDeviceOnline(std::string deviceId, int32_t authForm) { LOGI("SoftbusConnector::HandleDeviceOnline"); -- Gitee From 5fac68c9fc97d3e526a870001f3c916bdd2cfb3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B7=8D?= Date: Sat, 10 May 2025 19:07:55 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B8=85=E7=90=86=E8=BF=9B=E7=A8=8B?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李巍 --- .../implementation/src/devicestate/dm_device_state_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/implementation/src/devicestate/dm_device_state_manager.cpp b/services/implementation/src/devicestate/dm_device_state_manager.cpp index 1871b15b3..3b107ae51 100644 --- a/services/implementation/src/devicestate/dm_device_state_manager.cpp +++ b/services/implementation/src/devicestate/dm_device_state_manager.cpp @@ -161,7 +161,7 @@ void DmDeviceStateManager::HandleDeviceStatusChange(DmDeviceState devState, DmDe case DEVICE_INFO_CHANGED: ChangeDeviceInfo(devInfo); ProcessDeviceStateChange(devState, devInfo); - softbusConnector_->ClearProcessInfo(); + softbusConnector_->ClearChangeProcessInfo(); break; default: LOGE("HandleDeviceStatusChange error, unknown device state = %{public}d", devState); -- Gitee