diff --git a/services/distributeddataservice/service/kvdb/kvdb_general_store.cpp b/services/distributeddataservice/service/kvdb/kvdb_general_store.cpp index 9fd1fe9d0f0d4785b940859fa673f5ed6341fd50..d2a6c32fdd5be79994a39da67adee4af2f8179bb 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_general_store.cpp +++ b/services/distributeddataservice/service/kvdb/kvdb_general_store.cpp @@ -171,7 +171,8 @@ KVDBGeneralStore::KVDBGeneralStore(const StoreMetaData &meta) : manager_(meta.appId, meta.appId == Bootstrap::GetInstance().GetProcessLabel() ? defaultAccountId : meta.user, meta.instanceId) { - observer_.storeId_ = meta.storeId; + observer_ = std::make_shared(); + observer_->storeId_ = meta.storeId; StoreMetaDataLocal local; MetaDataManager::GetInstance().LoadMeta(meta.GetKeyLocal(), local, true); isPublic_ = local.isPublic; @@ -551,21 +552,21 @@ int32_t KVDBGeneralStore::Clean(const std::vector &devices, int32_t int32_t KVDBGeneralStore::Watch(int32_t origin, Watcher &watcher) { - if (origin != Watcher::Origin::ORIGIN_ALL || observer_.watcher_ != nullptr) { + if (origin != Watcher::Origin::ORIGIN_ALL || observer_->watcher_ != nullptr) { return GeneralError::E_INVALID_ARGS; } - observer_.watcher_ = &watcher; + observer_->watcher_ = &watcher; return GeneralError::E_OK; } int32_t KVDBGeneralStore::Unwatch(int32_t origin, Watcher &watcher) { - if (origin != Watcher::Origin::ORIGIN_ALL || observer_.watcher_ != &watcher) { + if (origin != Watcher::Origin::ORIGIN_ALL || observer_->watcher_ != &watcher) { return GeneralError::E_INVALID_ARGS; } - observer_.watcher_ = nullptr; + observer_->watcher_ = nullptr; return GeneralError::E_OK; } diff --git a/services/distributeddataservice/service/kvdb/kvdb_general_store.h b/services/distributeddataservice/service/kvdb/kvdb_general_store.h index 80e030f05502be847d9d51d4c89f70fc2ca9d1f3..f23de18c3178ea0cceb43e97d60c9680a3ec0090 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_general_store.h +++ b/services/distributeddataservice/service/kvdb/kvdb_general_store.h @@ -18,6 +18,7 @@ #include #include +#include #include #include "kv_store_changed_data.h" @@ -122,7 +123,7 @@ private: }; static constexpr uint8_t META_COMPRESS_RATE = 10; - ObserverProxy observer_; + std::shared_ptr observer_; KvManager manager_; KvDelegate *delegate_ = nullptr; std::shared_mutex bindMutex_;