From 7eed07d659d1e2aaf2427f837e13b7b0c5fd9772 Mon Sep 17 00:00:00 2001 From: "xiaocong.ran" Date: Tue, 1 Mar 2022 16:14:33 +0800 Subject: [PATCH] thread Signed-off-by: xiaocong.ran Change-Id: I8b7efde19ee54ac010fc5fff51780e9105d0e0b4 --- .../dependency/softbus/softbus_connector.cpp | 36 +++++++++++++++---- .../devicestate/dm_device_state_manager.cpp | 2 -- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp b/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp index 4ece01e32..b642e58f9 100644 --- a/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp +++ b/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp @@ -17,6 +17,8 @@ #include #include +#include +#include #include "dm_anonymous.h" #include "dm_constants.h" @@ -47,6 +49,30 @@ INodeStateCb SoftbusConnector::softbusNodeStateCb_ = { .onNodeOffline = SoftbusConnector::OnSoftbusDeviceOffline, .onNodeBasicInfoChanged = SoftbusConnector::OnSoftbusDeviceInfoChanged}; +void DeviceOnLine(std::map> stateCallbackMap, + DmDeviceInfo deviceInfo) +{ + LOGI("Device on line start"); + std::mutex lockDeviceOnLine; + std::lock_guard lock(lockDeviceOnLine); + for (auto &iter : stateCallbackMap) { + iter.second->OnDeviceOnline(iter.first, deviceInfo); + } + LOGI("Device on line end"); +} + +void DeviceOffLine(std::map> stateCallbackMap, + DmDeviceInfo deviceInfo) +{ + LOGI("Device off line start"); + std::mutex lockDeviceOffLine; + std::lock_guard lock(lockDeviceOffLine); + for (auto &iter : stateCallbackMap) { + iter.second->OnDeviceOffline(iter.first, deviceInfo); + } + LOGI("Device off line end"); +} + SoftbusConnector::SoftbusConnector() { softbusSession_ = std::make_shared(); @@ -445,9 +471,8 @@ void SoftbusConnector::OnSoftBusDeviceOnline(NodeBasicInfo *info) DmDeviceInfo dmDeviceInfo; CovertNodeBasicInfoToDmDevice(*info, dmDeviceInfo); - for (auto &iter : stateCallbackMap_) { - iter.second->OnDeviceOnline(iter.first, dmDeviceInfo); - } + std::thread deviceOnLine(DeviceOnLine, stateCallbackMap_, dmDeviceInfo); + deviceOnLine.detach(); if (discoveryDeviceInfoMap_.empty()) { return; @@ -473,9 +498,8 @@ void SoftbusConnector::OnSoftbusDeviceOffline(NodeBasicInfo *info) } DmDeviceInfo dmDeviceInfo; CovertNodeBasicInfoToDmDevice(*info, dmDeviceInfo); - for (auto &iter : stateCallbackMap_) { - iter.second->OnDeviceOffline(iter.first, dmDeviceInfo); - } + std::thread deviceOffLine(DeviceOffLine, stateCallbackMap_, dmDeviceInfo); + deviceOffLine.detach(); } void SoftbusConnector::OnSoftbusDeviceInfoChanged(NodeBasicInfoType type, NodeBasicInfo *info) diff --git a/services/devicemanagerservice/src/devicestate/dm_device_state_manager.cpp b/services/devicemanagerservice/src/devicestate/dm_device_state_manager.cpp index 98ba3c7f2..9318bd0ab 100644 --- a/services/devicemanagerservice/src/devicestate/dm_device_state_manager.cpp +++ b/services/devicemanagerservice/src/devicestate/dm_device_state_manager.cpp @@ -87,8 +87,6 @@ void DmDeviceStateManager::OnDeviceOffline(const std::string &pkgName, const DmD if (profileAdapter == nullptr) { LOGE("OnDeviceOffline profile adapter is null"); } else { - std::string uuid; - SoftbusConnector::GetUuidByNetworkId(info.deviceId, uuid); auto iter = remoteDeviceInfos_.find(std::string(info.deviceId)); if (iter == remoteDeviceInfos_.end()) { } else { -- Gitee