From 3ba0c0a09f2e58457d78f7ca40875bf82abe206c Mon Sep 17 00:00:00 2001 From: gaoqiang_strong Date: Fri, 25 Apr 2025 10:10:03 +0800 Subject: [PATCH 1/3] =?UTF-8?q?xcollie=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: gaoqiang_strong --- .../src/ipc/standard/ipc_cmd_parser.cpp | 37 ++++++++++++++++--- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/services/service/src/ipc/standard/ipc_cmd_parser.cpp b/services/service/src/ipc/standard/ipc_cmd_parser.cpp index 607e50b9f..a0b2d6004 100644 --- a/services/service/src/ipc/standard/ipc_cmd_parser.cpp +++ b/services/service/src/ipc/standard/ipc_cmd_parser.cpp @@ -45,12 +45,38 @@ #include "ipc_server_client_proxy.h" #include "ipc_server_stub.h" #include "multiple_user_connector.h" +#include "app_manager.h" #if !(defined(__LITEOS_M__) || defined(LITE_DEVICE)) #include "multiple_user_connector.h" #endif namespace OHOS { namespace DistributedHardware { const unsigned int XCOLLIE_TIMEOUT_S = 5; +constexpr const char* SCENEBOARD_PROCESS = "sceneboard"; + +int32_t SetXcollieTimer() +{ + std::string processName = ""; + AppManager::GetInstance().GetCallerProcessName(processName); + auto idx = processName.find(SCENEBOARD_PROCESS); + if (idx == std::string::npos) { + return DM_OK; + } + return OHOS::HiviewDFX::XCollie::GetInstance().SetTimer("RegisterDeviceManagerListener", XCOLLIE_TIMEOUT_S, + nullptr, nullptr, OHOS::HiviewDFX::XCOLLIE_FLAG_LOG | OHOS::HiviewDFX::XCOLLIE_FLAG_RECOVERY); +} + +void CancelXcollieTimer(int32_t id) +{ + std::string processName = ""; + AppManager::GetInstance().GetCallerProcessName(processName); + auto idx = processName.find(SCENEBOARD_PROCESS); + if (idx == std::string::npos) { + return; + } + OHOS::HiviewDFX::XCollie::GetInstance().CancelTimer(id); +} + bool EncodeDmDeviceInfo(const DmDeviceInfo &devInfo, MessageParcel &parcel) { bool bRet = true; @@ -394,19 +420,18 @@ ON_IPC_CMD(GET_ALL_TRUST_DEVICE_LIST, MessageParcel &data, MessageParcel &reply) ON_IPC_CMD(REGISTER_DEVICE_MANAGER_LISTENER, MessageParcel &data, MessageParcel &reply) { - int32_t id = OHOS::HiviewDFX::XCollie::GetInstance().SetTimer("RegisterDeviceManagerListener", XCOLLIE_TIMEOUT_S, - nullptr, nullptr, OHOS::HiviewDFX::XCOLLIE_FLAG_LOG | OHOS::HiviewDFX::XCOLLIE_FLAG_RECOVERY); + int32_t timerId = SetXcollieTimer(); std::string pkgName = data.ReadString(); sptr listener = data.ReadRemoteObject(); if (listener == nullptr) { LOGE("read remote object failed."); - OHOS::HiviewDFX::XCollie::GetInstance().CancelTimer(id); + CancelXcollieTimer(timerId); return ERR_DM_POINT_NULL; } sptr callback(new IpcServerClientProxy(listener)); if (callback == nullptr) { LOGE("create ipc server client proxy failed."); - OHOS::HiviewDFX::XCollie::GetInstance().CancelTimer(id); + CancelXcollieTimer(timerId); return ERR_DM_POINT_NULL; } ProcessInfo processInfo; @@ -416,10 +441,10 @@ ON_IPC_CMD(REGISTER_DEVICE_MANAGER_LISTENER, MessageParcel &data, MessageParcel int32_t result = IpcServerStub::GetInstance().RegisterDeviceManagerListener(processInfo, callback); if (!reply.WriteInt32(result)) { LOGE("write result failed"); - OHOS::HiviewDFX::XCollie::GetInstance().CancelTimer(id); + CancelXcollieTimer(timerId); return ERR_DM_IPC_WRITE_FAILED; } - OHOS::HiviewDFX::XCollie::GetInstance().CancelTimer(id); + CancelXcollieTimer(timerId); return DM_OK; } -- Gitee From 6ac7948b0881f74350bfa82e2266fe1eddb8d802 Mon Sep 17 00:00:00 2001 From: gaoqiang_strong Date: Fri, 25 Apr 2025 10:26:21 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BC=96=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: gaoqiang_strong --- test/unittest/BUILD.gn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/unittest/BUILD.gn b/test/unittest/BUILD.gn index 2ec361727..39c0bc4f7 100644 --- a/test/unittest/BUILD.gn +++ b/test/unittest/BUILD.gn @@ -210,6 +210,7 @@ ohos_unittest("UTTest_ipc_cmd_parser_service") { "device_auth:deviceauth_sdk", "device_info_manager:distributed_device_profile_common", "device_info_manager:distributed_device_profile_sdk", + "eventhandler:libeventhandler", "dsoftbus:softbus_client", "ffrt:libffrt", "googletest:gmock", @@ -936,6 +937,7 @@ ohos_unittest("UTTest_ipc_server_client_proxy") { "device_info_manager:distributed_device_profile_common", "device_info_manager:distributed_device_profile_sdk", "dsoftbus:softbus_client", + "eventhandler:libeventhandler", "ffrt:libffrt", "googletest:gmock", "hicollie:libhicollie", -- Gitee From f0d70518827ebee505fc83fd9d902ad68f1e05d0 Mon Sep 17 00:00:00 2001 From: gaoqiang_strong Date: Fri, 25 Apr 2025 17:43:55 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=B2=BE=E5=87=86=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: gaoqiang_strong --- services/service/src/ipc/standard/ipc_cmd_parser.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/services/service/src/ipc/standard/ipc_cmd_parser.cpp b/services/service/src/ipc/standard/ipc_cmd_parser.cpp index a0b2d6004..117250d45 100644 --- a/services/service/src/ipc/standard/ipc_cmd_parser.cpp +++ b/services/service/src/ipc/standard/ipc_cmd_parser.cpp @@ -52,14 +52,13 @@ namespace OHOS { namespace DistributedHardware { const unsigned int XCOLLIE_TIMEOUT_S = 5; -constexpr const char* SCENEBOARD_PROCESS = "sceneboard"; +constexpr const char* SCENEBOARD_PROCESS = "com.ohos.sceneboard"; int32_t SetXcollieTimer() { std::string processName = ""; AppManager::GetInstance().GetCallerProcessName(processName); - auto idx = processName.find(SCENEBOARD_PROCESS); - if (idx == std::string::npos) { + if (processName != SCENEBOARD_PROCESS) { return DM_OK; } return OHOS::HiviewDFX::XCollie::GetInstance().SetTimer("RegisterDeviceManagerListener", XCOLLIE_TIMEOUT_S, @@ -70,8 +69,7 @@ void CancelXcollieTimer(int32_t id) { std::string processName = ""; AppManager::GetInstance().GetCallerProcessName(processName); - auto idx = processName.find(SCENEBOARD_PROCESS); - if (idx == std::string::npos) { + if (processName != SCENEBOARD_PROCESS) { return; } OHOS::HiviewDFX::XCollie::GetInstance().CancelTimer(id); -- Gitee