diff --git a/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp b/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp index 4ece01e321d9abed10799d25318b18acd538fada..c78f673028ee3d036b9804c484fe22964fccd720 100644 --- a/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp +++ b/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp @@ -17,6 +17,7 @@ #include #include +#include #include "dm_anonymous.h" #include "dm_constants.h" @@ -47,6 +48,22 @@ INodeStateCb SoftbusConnector::softbusNodeStateCb_ = { .onNodeOffline = SoftbusConnector::OnSoftbusDeviceOffline, .onNodeBasicInfoChanged = SoftbusConnector::OnSoftbusDeviceInfoChanged}; +void DeviceOnLine(std::shared_ptr callback, std::string pkgName, DmDeviceInfo deviceInfo) +{ + if (callback == nullptr) { + LOGE("callback is null"); + } + callback->OnDeviceOnline(pkgName, deviceInfo); +} + +void DeviceOffLine(std::shared_ptr callback, std::string pkgName, DmDeviceInfo deviceInfo) +{ + if (callback == nullptr) { + LOGE("callback is null"); + } + callback->OnDeviceOffline(pkgName, deviceInfo); +} + SoftbusConnector::SoftbusConnector() { softbusSession_ = std::make_shared(); @@ -446,7 +463,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, iter.second, iter.first, dmDeviceInfo); + deviceOnLine.detach(); } if (discoveryDeviceInfoMap_.empty()) { @@ -463,10 +481,12 @@ void SoftbusConnector::OnSoftBusDeviceOnline(NodeBasicInfo *info) std::string deviceId = (char *)udid; LOGI("device online, deviceId: %s", GetAnonyString(deviceId).c_str()); discoveryDeviceInfoMap_.erase(deviceId); + LOGI("OnLine out"); } void SoftbusConnector::OnSoftbusDeviceOffline(NodeBasicInfo *info) { + LOGI("device offline"); if (info == nullptr) { LOGE("OnSoftbusDeviceOffline NodeBasicInfo is nullptr"); return; @@ -474,8 +494,10 @@ void SoftbusConnector::OnSoftbusDeviceOffline(NodeBasicInfo *info) DmDeviceInfo dmDeviceInfo; CovertNodeBasicInfoToDmDevice(*info, dmDeviceInfo); for (auto &iter : stateCallbackMap_) { - iter.second->OnDeviceOffline(iter.first, dmDeviceInfo); + std::thread deviceOffLine(DeviceOffLine, iter.second, iter.first, dmDeviceInfo); + deviceOffLine.detach(); } + LOGI("OffLine out"); } 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 98ba3c7f2c79c23059f9c8e52b7d54beac0e7b91..9318bd0abea22370f2e480c36816c74fcf282c72 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 {