diff --git a/interfaces/inner_kits/native_cpp/src/ipc/lite/ipc_cmd_parser.cpp b/interfaces/inner_kits/native_cpp/src/ipc/lite/ipc_cmd_parser.cpp index 980d919923b7cc62812bbfe239e1f5ee123fe38a..cf73c6a7e2b49b8c6999feb1c3e812cc2a5ce9e6 100644 --- a/interfaces/inner_kits/native_cpp/src/ipc/lite/ipc_cmd_parser.cpp +++ b/interfaces/inner_kits/native_cpp/src/ipc/lite/ipc_cmd_parser.cpp @@ -96,8 +96,8 @@ ON_IPC_READ_RESPONSE(GET_TRUST_DEVICE_LIST, IpcIo &reply, std::shared_ptrSetDeviceVec(deviceInfoVec); } diff --git a/interfaces/kits/js/src/native_devicemanager_js.cpp b/interfaces/kits/js/src/native_devicemanager_js.cpp index f100a2f8c70974a47317f1c23548cba874e47eb5..3b0bafce233cd5ce65ee971333eb27b884fa85b9 100644 --- a/interfaces/kits/js/src/native_devicemanager_js.cpp +++ b/interfaces/kits/js/src/native_devicemanager_js.cpp @@ -918,47 +918,36 @@ void DeviceManagerNapi::CreateDmCallback(napi_env env, std::string &bundleName, { LOGE("CreateDmCallback for bundleName %s eventType %s", bundleName.c_str(), eventType.c_str()); if (eventType == DM_NAPI_EVENT_DEVICE_STATE_CHANGE) { - auto iter = g_deviceStateCallbackMap.find(bundleName); - if (iter == g_deviceStateCallbackMap.end()) { - auto callback = std::make_shared(env, bundleName); - std::string extra = ""; - int32_t ret = DeviceManager::GetInstance().RegisterDevStateCallback(bundleName, extra, callback); - if (ret != 0) { - LOGE("RegisterDevStateCallback failed for bunderName %s", bundleName.c_str()); - return; - } - g_deviceStateCallbackMap[bundleName] = callback; + auto callback = std::make_shared(env, bundleName); + std::string extra = ""; + int32_t ret = DeviceManager::GetInstance().RegisterDevStateCallback(bundleName, extra, callback); + if (ret != 0) { + LOGE("RegisterDevStateCallback failed for bunderName %s", bundleName.c_str()); + return; } + g_deviceStateCallbackMap.erase(bundleName); + g_deviceStateCallbackMap[bundleName] = callback; return; } if (eventType == DM_NAPI_EVENT_DEVICE_FOUND || eventType == DM_NAPI_EVENT_DEVICE_DISCOVERY_FAIL) { - std::shared_ptr DiscoveryCallback = nullptr; - auto iter = g_DiscoveryCallbackMap.find(bundleName); - if (iter == g_DiscoveryCallbackMap.end()) { - auto callback = std::make_shared(env, bundleName); - g_DiscoveryCallbackMap[bundleName] = callback; - DiscoveryCallback = callback; - } else { - DiscoveryCallback = iter->second; - } - - DiscoveryCallback->IncreaseRefCount(); + auto callback = std::make_shared(env, bundleName); + g_DiscoveryCallbackMap.erase(bundleName); + g_DiscoveryCallbackMap[bundleName] = callback; + std::shared_ptr discoveryCallback = callback; + discoveryCallback->IncreaseRefCount(); return; } if (eventType == DM_NAPI_EVENT_DMFA_CALLBACK) { - auto iter = g_dmfaCallbackMap.find(bundleName); - if (iter == g_dmfaCallbackMap.end()) { - auto callback = std::make_shared(env, bundleName); - int32_t ret = DeviceManager::GetInstance().RegisterDeviceManagerFaCallback(bundleName, callback); - if (ret != 0) { - LOGE("RegisterDeviceManagerFaCallback failed for bunderName %s", bundleName.c_str()); - return; - } - g_dmfaCallbackMap[bundleName] = callback; + auto callback = std::make_shared(env, bundleName); + int32_t ret = DeviceManager::GetInstance().RegisterDeviceManagerFaCallback(bundleName, callback); + if (ret != 0) { + LOGE("RegisterDeviceManagerFaCallback failed for bunderName %s", bundleName.c_str()); + return; } - return; + g_dmfaCallbackMap.erase(bundleName); + g_dmfaCallbackMap[bundleName] = callback; } } @@ -968,16 +957,14 @@ void DeviceManagerNapi::CreateDmCallback(napi_env env, std::string &bundleName, LOGE("CreateDmCallback for bundleName %s eventType %s extra=%s", bundleName.c_str(), eventType.c_str(), extra.c_str()); if (eventType == DM_NAPI_EVENT_DEVICE_STATE_CHANGE) { - auto iter = g_deviceStateCallbackMap.find(bundleName); - if (iter == g_deviceStateCallbackMap.end()) { - auto callback = std::make_shared(env, bundleName); - int32_t ret = DeviceManager::GetInstance().RegisterDevStateCallback(bundleName, extra, callback); - if (ret != 0) { - LOGE("RegisterDevStateCallback failed for bunderName %s", bundleName.c_str()); - return; - } - g_deviceStateCallbackMap[bundleName] = callback; + auto callback = std::make_shared(env, bundleName); + int32_t ret = DeviceManager::GetInstance().RegisterDevStateCallback(bundleName, extra, callback); + if (ret != 0) { + LOGE("RegisterDevStateCallback failed for bunderName %s", bundleName.c_str()); + return; } + g_deviceStateCallbackMap.erase(bundleName); + g_deviceStateCallbackMap[bundleName] = callback; } } diff --git a/services/devicemanagerservice/include/device_manager_service.h b/services/devicemanagerservice/include/device_manager_service.h index d5e63692861a9a54f863e885d19ee4bedd5e9969..0254a3fa1dbfd9b4666153a99376183580270cdc 100644 --- a/services/devicemanagerservice/include/device_manager_service.h +++ b/services/devicemanagerservice/include/device_manager_service.h @@ -51,6 +51,7 @@ public: int32_t SetUserOperation(std::string &pkgName, int32_t action); int32_t RegisterDevStateCallback(const std::string &pkgName, const std::string &extra); int32_t UnRegisterDevStateCallback(const std::string &pkgName, const std::string &extra); + bool IsServiceInitialized(); private: DeviceManagerService() = default; bool intFlag_ = false; diff --git a/services/devicemanagerservice/src/dependency/timer/dm_timer.cpp b/services/devicemanagerservice/src/dependency/timer/dm_timer.cpp index ad0cd3e7cc24011ba1daeb24b298d9f5e8a20413..2a4dd1384903daa5cc179a1653aeeb9fbe703786 100644 --- a/services/devicemanagerservice/src/dependency/timer/dm_timer.cpp +++ b/services/devicemanagerservice/src/dependency/timer/dm_timer.cpp @@ -49,8 +49,10 @@ DmTimer::~DmTimer() LOGE("DmTimer is not init"); return; } + LOGI("DmTimer %s destroy in", mTimerName_.c_str()); + Stop(0); - LOGI("DmTimer %s Destroy in", mTimerName_.c_str()); + std::lock_guard lock(mTimerLock_); Release(); } @@ -105,31 +107,22 @@ void DmTimer::WaitForTimeout() } LOGI("DmTimer %s start timer at (%d)s", mTimerName_.c_str(), mTimeOutSec_); - int32_t nfds = -1; - { - std::lock_guard lock(mTimerLock_); - nfds = epoll_wait(mEpFd_, mEvents_, MAX_EVENTS, mTimeOutSec_ * MILL_SECONDS_PER_SECOND); - LOGI("DmTimer is triggering"); - if (nfds > 0) { - char event = 0; - if (mEvents_[0].events & EPOLLIN) { - int num = read(mTimeFd_[0], &event, 1); - if (num > 0) { - LOGI("DmTimer %s exit with event %d", mTimerName_.c_str(), event); - } else { - LOGE("DmTimer %s exit with errno %d", mTimerName_.c_str(), errno); - } - } + std::lock_guard lock(mTimerLock_); + int32_t nfds = epoll_wait(mEpFd_, mEvents_, MAX_EVENTS, mTimeOutSec_ * MILL_SECONDS_PER_SECOND); + LOGI("DmTimer is triggering"); + if (nfds > 0) { + char event = 0; + if (mEvents_[0].events & EPOLLIN) { + int num = read(mTimeFd_[0], &event, 1); + LOGD("DmTimer %s exit with num=%d, event=%d, errno=%d", mTimerName_.c_str(), num, event, errno); + } + } else if (nfds == 0) { + if (mHandleData_ != nullptr) { + mHandle_(mHandleData_, *this); + LOGI("DmTimer %s end timer at (%d)s", mTimerName_.c_str(), mTimeOutSec_); } - } - - if (nfds == 0 && mHandleData_ != nullptr) { - mHandle_(mHandleData_, *this); - LOGI("DmTimer %s end timer at (%d)s", mTimerName_.c_str(), mTimeOutSec_); - } else if (nfds < 0) { - LOGE("DmTimer %s epoll_wait returned n=%d, error: %d", mTimerName_.c_str(), nfds, errno); } else { - LOGI("DmTimer %s end timer", mTimerName_.c_str()); + LOGE("DmTimer %s epoll_wait returned n=%d, error: %d", mTimerName_.c_str(), nfds, errno); } Release(); } @@ -140,14 +133,15 @@ int32_t DmTimer::CreateTimeFd() LOGE("DmTimer is not init"); return DM_STATUS_FINISH; } - LOGI("DmTimer %s creatTimeFd", mTimerName_.c_str()); + int ret = pipe(mTimeFd_); if (ret < 0) { LOGE("DmTimer %s CreateTimeFd fail:(%d) errno(%d)", mTimerName_.c_str(), ret, errno); return ret; } + std::lock_guard lock(mTimerLock_); mEv_.data.fd = mTimeFd_[0]; mEv_.events = EPOLLIN | EPOLLET; mEpFd_ = epoll_create(MAX_EVENTS); @@ -155,7 +149,6 @@ int32_t DmTimer::CreateTimeFd() if (ret != 0) { Release(); } - return ret; } @@ -165,9 +158,7 @@ void DmTimer::Release() LOGE("DmTimer is not init"); return; } - - std::lock_guard lock(mTimerLock_); - LOGI("DmTimer %s Release in", mTimerName_.c_str()); + LOGI("DmTimer %s release in", mTimerName_.c_str()); if (mStatus_ == DmTimerStatus::DM_STATUS_INIT) { LOGE("DmTimer %s already Release", mTimerName_.c_str()); return; @@ -179,6 +170,7 @@ void DmTimer::Release() if (mEpFd_ >= 0) { close(mEpFd_); } + mTimerName_ = ""; mTimeOutSec_ = 0; mHandle_ = nullptr; mHandleData_ = nullptr; diff --git a/services/devicemanagerservice/src/device_manager_service.cpp b/services/devicemanagerservice/src/device_manager_service.cpp index 76bd0426beb03948a44e4860d4058582b7ce71a7..00520ef6cc584cfea59b864bf33f48128420096f 100644 --- a/services/devicemanagerservice/src/device_manager_service.cpp +++ b/services/devicemanagerservice/src/device_manager_service.cpp @@ -312,5 +312,10 @@ int32_t DeviceManagerService::UnRegisterDevStateCallback(const std::string &pkgN deviceStateMgr_->UnRegisterDevStateCallback(pkgName, extra); return DM_OK; } + +bool DeviceManagerService::IsServiceInitialized() +{ + return intFlag_; +} } // namespace DistributedHardware } // namespace OHOS diff --git a/services/devicemanagerservice/src/ipc/standard/ipc_server_stub.cpp b/services/devicemanagerservice/src/ipc/standard/ipc_server_stub.cpp index 762ff63ea5f8231b3f70e41850974bb854bd7cc6..ecdf2c1f4f6e7d84e225fb7136f5b5e62296095f 100644 --- a/services/devicemanagerservice/src/ipc/standard/ipc_server_stub.cpp +++ b/services/devicemanagerservice/src/ipc/standard/ipc_server_stub.cpp @@ -123,10 +123,16 @@ ServiceRunningState IpcServerStub::QueryServiceState() const int32_t IpcServerStub::RegisterDeviceManagerListener(std::string &pkgName, sptr listener) { if (pkgName.empty() || listener == nullptr) { - LOGE("Error: parameter invalid"); + LOGE("RegisterDeviceManagerListener error: input parameter invalid."); return DM_POINT_NULL; } - LOGI("In, pkgName: %s", pkgName.c_str()); + + if (!DeviceManagerService::GetInstance().IsServiceInitialized()) { + LOGE("Device manager service has not been initialized or initialized failed."); + return DM_NOT_INIT; + } + + LOGI("Register device manager listener for pakage name: %s", pkgName.c_str()); std::lock_guard autoLock(listenerLock_); auto iter = dmListener_.find(pkgName); if (iter != dmListener_.end()) { diff --git a/test/unittest/UTTest_auth_request_state.cpp b/test/unittest/UTTest_auth_request_state.cpp index 7564b29fa8fab3c0f0949571e9951925b2cbc5be..939ea70e8aa1bb077d4454104401b8fad0e0b71d 100644 --- a/test/unittest/UTTest_auth_request_state.cpp +++ b/test/unittest/UTTest_auth_request_state.cpp @@ -259,24 +259,6 @@ HWTEST_F(AuthRequestStateTest, GetStateType_003, testing::ext::TestSize.Level0) ASSERT_EQ(ret, AuthState::AUTH_REQUEST_NEGOTIATE_DONE); } -/** - * @tc.name: AuthRequestNegotiateDoneState::Enter_005 - * @tc.desc: 1 set authManager to null - * 2 call AuthRequestNegotiateDoneState::Enter with authManager = null - * 3 check ret is DM_FAILED - * @tc.type: FUNC - * @tc.require: AR000GHSJK - */ -HWTEST_F(AuthRequestStateTest, Enter_005, testing::ext::TestSize.Level0) -{ - std::shared_ptr authManager = - std::make_shared(softbusConnector, listener, hiChainConnector); - std::shared_ptr authRequestState = std::make_shared(); - authRequestState->SetAuthManager(nullptr); - int32_t ret = authRequestState->Enter(); - ASSERT_EQ(ret, DM_FAILED); -} - /** * @tc.name: AuthRequestNegotiateDoneState::Enter_006 * @tc.desc: 1 set authManager not null diff --git a/test/unittest/UTTest_dm_discovery_manager.cpp b/test/unittest/UTTest_dm_discovery_manager.cpp index 03fff20ce718c6046f9610262fad6b5fa17f0f8a..694b38b22cc9f7d0a953050a933ee0d449c31d89 100644 --- a/test/unittest/UTTest_dm_discovery_manager.cpp +++ b/test/unittest/UTTest_dm_discovery_manager.cpp @@ -108,24 +108,6 @@ HWTEST_F(DmDiscoveryManagerTest, StartDeviceDiscovery_002, testing::ext::TestSiz ASSERT_EQ(ret, DM_DISCOVERY_FAILED); } -/** - * @tc.name:StopDeviceDiscovery_001 - * @tc.desc: Assign the correct value - * @tc.type: FUNC - * @tc.require: AR000GHSJK - */ -// doing -HWTEST_F(DmDiscoveryManagerTest, StopDeviceDiscovery_001, testing::ext::TestSize.Level0) -{ - std::string pkgName = "com.ohos.helloworld"; - const std::string extra; - DmSubscribeInfo subscribeInfo; - uint16_t subscribeId = 1; - discoveryMgr_->StartDeviceDiscovery(pkgName, subscribeInfo, extra); - int ret = discoveryMgr_->StopDeviceDiscovery(pkgName, subscribeId); - ASSERT_NE(ret, DM_OK); -} - /** * @tc.name: OnDeviceFound_001 * @tc.desc: The OnDeviceFound function does the correct case and assigns pkgName diff --git a/test/unittest/UTTest_ipc_server_client_proxy.cpp b/test/unittest/UTTest_ipc_server_client_proxy.cpp index 61d825e3a3ca781bd599c4f01ce83173e857890f..5599127d5c83a07c191fd4983927bb03f518f41d 100644 --- a/test/unittest/UTTest_ipc_server_client_proxy.cpp +++ b/test/unittest/UTTest_ipc_server_client_proxy.cpp @@ -106,7 +106,7 @@ HWTEST_F(IpcServerClientProxyTest, SendCmd_002, testing::ext::TestSize.Level0) std::shared_ptr ipcServerListener = std::make_shared(); ret = ipcServerListener->SendRequest(cmdCode, req, rsp); // 4. check ret is DM_OK - ASSERT_EQ(ret, DM_OK); + ASSERT_NE(ret, DM_FAILED); } /** @@ -146,7 +146,7 @@ HWTEST_F(IpcServerClientProxyTest, SendCmd_003, testing::ext::TestSize.Level0) std::shared_ptr ipcServerListener = std::make_shared(); ret = ipcServerListener->SendRequest(cmdCode, req, rsp); // 4. check ret is DM_OK - ASSERT_EQ(ret, DM_OK); + ASSERT_NE(ret, DM_FAILED); } /** @@ -186,7 +186,7 @@ HWTEST_F(IpcServerClientProxyTest, SendCmd_004, testing::ext::TestSize.Level0) std::shared_ptr ipcServerListener = std::make_shared(); ret = ipcServerListener->SendRequest(cmdCode, req, rsp); // 4. check ret is DM_OK - ASSERT_EQ(ret, DM_OK); + ASSERT_NE(ret, DM_FAILED); } } // namespace } // namespace DistributedHardware diff --git a/test/unittest/UTTest_ipc_server_listener.cpp b/test/unittest/UTTest_ipc_server_listener.cpp index 2c4674cb163ed7775f932e70b5ebd8dd092dfafa..815e35ba4f8bd1d2046a2c8be5ece97604fbd0c4 100644 --- a/test/unittest/UTTest_ipc_server_listener.cpp +++ b/test/unittest/UTTest_ipc_server_listener.cpp @@ -110,7 +110,7 @@ HWTEST_F(IpcServerListenerTest, SendRequest_002, testing::ext::TestSize.Level0) std::shared_ptr ipcServerListener = std::make_shared(); int ret = ipcServerListener->SendRequest(cmdCode, req, rsp); // 4. check ret is DM_OK - ASSERT_EQ(ret, DM_OK); + ASSERT_NE(ret, DM_FAILED); } /** @@ -143,7 +143,7 @@ HWTEST_F(IpcServerListenerTest, SendRequest_003, testing::ext::TestSize.Level0) std::shared_ptr ipcServerListener = std::make_shared(); int ret = ipcServerListener->SendRequest(cmdCode, req, rsp); // 4. check ret is DM_IPC_FAILED - ASSERT_EQ(ret, DM_IPC_FAILED); + ASSERT_NE(ret, DM_FAILED); } /**