diff --git a/interfaces/inner_kits/native_cpp/src/ipc/standard/ipc_client_manager.cpp b/interfaces/inner_kits/native_cpp/src/ipc/standard/ipc_client_manager.cpp index db37b19cbd6fbf14d842dc66ee466492aa1de8b5..b175e930cb244f4d8c5b068ed9ace332b642e676 100644 --- a/interfaces/inner_kits/native_cpp/src/ipc/standard/ipc_client_manager.cpp +++ b/interfaces/inner_kits/native_cpp/src/ipc/standard/ipc_client_manager.cpp @@ -68,6 +68,11 @@ int32_t IpcClientManager::ClientInit() if (!object->AddDeathRecipient(dmRecipient_)) { LOGE("InitDeviceManagerService: AddDeathRecipient Failed"); } + if (!object->IsProxyObject()) { + LOGI("object is not proxy object."); + dmInterface_ = sptr(new IpcClientServerProxy(object)); + return DM_OK; + } dmInterface_ = iface_cast(object); LOGI("Completed"); return DM_OK; diff --git a/utils/include/kvadapter/kv_adapter.h b/utils/include/kvadapter/kv_adapter.h index b6b22f8d382a1b068e82586f5438b0f04c3c8a49..e59c76fd05cd6aa73e6ec5dc56d889fbf9993002 100644 --- a/utils/include/kvadapter/kv_adapter.h +++ b/utils/include/kvadapter/kv_adapter.h @@ -60,6 +60,7 @@ private: DistributedKv::DataType dataType_ = DistributedKv::DataType::TYPE_STATICS; std::shared_ptr kvStorePtr_ = nullptr; std::mutex kvAdapterMutex_; + std::mutex kvDataMgrMutex_; std::atomic isInited_ = false; }; } // namespace DistributedHardware diff --git a/utils/src/kvadapter/kv_adapter.cpp b/utils/src/kvadapter/kv_adapter.cpp index 15b5c226a12a8339930a507e510364f583ca3c4f..2afa4dfd7067de2a054d92fdbd275f63f65834e6 100644 --- a/utils/src/kvadapter/kv_adapter.cpp +++ b/utils/src/kvadapter/kv_adapter.cpp @@ -161,6 +161,7 @@ DistributedKv::Status KVAdapter::GetLocalKvStorePtr() .kvStoreType = DistributedKv::KvStoreType::SINGLE_VERSION, .baseDir = DATABASE_DIR }; + std::lock_guard lock(kvDataMgrMutex_); DistributedKv::Status status = kvDataMgr_.GetSingleKvStore(options, appId_, storeId_, kvStorePtr_); return status; } @@ -168,18 +169,21 @@ DistributedKv::Status KVAdapter::GetLocalKvStorePtr() void KVAdapter::RegisterKvStoreDeathListener() { LOGI("Register syncCompleted listener"); + std::lock_guard lock(kvDataMgrMutex_); kvDataMgr_.RegisterKvStoreServiceDeathRecipient(shared_from_this()); } void KVAdapter::UnregisterKvStoreDeathListener() { LOGI("UnRegister death listener"); + std::lock_guard lock(kvDataMgrMutex_); kvDataMgr_.UnRegisterKvStoreServiceDeathRecipient(shared_from_this()); } int32_t KVAdapter::DeleteKvStore() { LOGI("Delete KvStore!"); + std::lock_guard lock(kvDataMgrMutex_); kvDataMgr_.CloseKvStore(appId_, storeId_); kvDataMgr_.DeleteKvStore(appId_, storeId_, DATABASE_DIR); return DM_OK;