From a293c0b3e9d1bb05ab3265a6377b21bb4f2fd802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BE=99=E5=88=9A?= Date: Wed, 26 Feb 2025 17:18:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=87=8D=E5=A4=8D=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 龙刚 --- .../data_share/common/seq_strategy.cpp | 19 +++++++++++-------- .../service/data_share/common/seq_strategy.h | 2 +- .../strategies/get_data_strategy.cpp | 8 +------- .../strategies/publish_strategy.cpp | 8 +------- .../strategies/rdb_notify_strategy.cpp | 8 +------- .../strategies/subscribe_strategy.cpp | 8 +------- .../strategies/template_strategy.cpp | 8 +------- 7 files changed, 17 insertions(+), 44 deletions(-) diff --git a/services/distributeddataservice/service/data_share/common/seq_strategy.cpp b/services/distributeddataservice/service/data_share/common/seq_strategy.cpp index 08bb71eb5..f9615e1c0 100644 --- a/services/distributeddataservice/service/data_share/common/seq_strategy.cpp +++ b/services/distributeddataservice/service/data_share/common/seq_strategy.cpp @@ -26,18 +26,21 @@ bool SeqStrategy::operator()(std::shared_ptr context) } return true; } -bool SeqStrategy::Init(std::initializer_list strategies) + +void SeqStrategy::Init(std::initializer_list strategies) { - for (const auto &item: strategies) { - if (item == nullptr) { - return false; + std::initializer_list::iterator it = std::find(strategies.begin(), strategies.end(), nullptr); + if (it != strategies.end()) { + std::for_each(strategies.begin(), strategies.end(), [](Strategy *item) { + delete item; + }); + } else { + for (const auto &item: strategies) { + actions_.emplace_back(item); } } - for (const auto &item: strategies) { - actions_.emplace_back(item); - } - return true; } + bool SeqStrategy::IsEmpty() { return actions_.empty(); diff --git a/services/distributeddataservice/service/data_share/common/seq_strategy.h b/services/distributeddataservice/service/data_share/common/seq_strategy.h index 00095a673..c86dc4223 100644 --- a/services/distributeddataservice/service/data_share/common/seq_strategy.h +++ b/services/distributeddataservice/service/data_share/common/seq_strategy.h @@ -25,7 +25,7 @@ namespace OHOS::DataShare { class SeqStrategy : public Strategy { public: bool IsEmpty(); - bool Init(std::initializer_list strategies); + void Init(std::initializer_list strategies); bool operator()(std::shared_ptr context) override; private: diff --git a/services/distributeddataservice/service/data_share/strategies/get_data_strategy.cpp b/services/distributeddataservice/service/data_share/strategies/get_data_strategy.cpp index c32d5daff..043e26c14 100644 --- a/services/distributeddataservice/service/data_share/strategies/get_data_strategy.cpp +++ b/services/distributeddataservice/service/data_share/strategies/get_data_strategy.cpp @@ -62,13 +62,7 @@ SeqStrategy &GetDataStrategy::GetStrategy() new (std::nothrow) LoadConfigCommonStrategy(), new (std::nothrow) LoadConfigFromDataProxyNodeStrategy() }; - auto ret = strategies_.Init(list); - if (!ret) { - std::for_each(list.begin(), list.end(), [](Strategy *item) { - delete item; - }); - return strategies_; - } + strategies_.Init(list); return strategies_; } diff --git a/services/distributeddataservice/service/data_share/strategies/publish_strategy.cpp b/services/distributeddataservice/service/data_share/strategies/publish_strategy.cpp index 26b116d48..4d908bf9a 100644 --- a/services/distributeddataservice/service/data_share/strategies/publish_strategy.cpp +++ b/services/distributeddataservice/service/data_share/strategies/publish_strategy.cpp @@ -67,13 +67,7 @@ SeqStrategy &PublishStrategy::GetStrategy() new (std::nothrow) LoadConfigFromDataProxyNodeStrategy(), new (std::nothrow) PermissionStrategy() }; - auto ret = strategies_.Init(list); - if (!ret) { - std::for_each(list.begin(), list.end(), [](Strategy *item) { - delete item; - }); - return strategies_; - } + strategies_.Init(list); return strategies_; } } // namespace OHOS::DataShare \ No newline at end of file diff --git a/services/distributeddataservice/service/data_share/strategies/rdb_notify_strategy.cpp b/services/distributeddataservice/service/data_share/strategies/rdb_notify_strategy.cpp index a979a9d00..6d982e7d8 100644 --- a/services/distributeddataservice/service/data_share/strategies/rdb_notify_strategy.cpp +++ b/services/distributeddataservice/service/data_share/strategies/rdb_notify_strategy.cpp @@ -54,13 +54,7 @@ SeqStrategy &RdbNotifyStrategy::GetStrategy() new (std::nothrow)LoadConfigFromBundleInfoStrategy(), new (std::nothrow)LoadConfigDataInfoStrategy() }; - auto ret = strategies_.Init(list); - if (!ret) { - std::for_each(list.begin(), list.end(), [](Strategy *item) { - delete item; - }); - return strategies_; - } + strategies_.Init(list); return strategies_; } } // namespace OHOS::DataShare \ No newline at end of file diff --git a/services/distributeddataservice/service/data_share/strategies/subscribe_strategy.cpp b/services/distributeddataservice/service/data_share/strategies/subscribe_strategy.cpp index 4b7314c88..2bc613537 100644 --- a/services/distributeddataservice/service/data_share/strategies/subscribe_strategy.cpp +++ b/services/distributeddataservice/service/data_share/strategies/subscribe_strategy.cpp @@ -51,13 +51,7 @@ SeqStrategy &SubscribeStrategy::GetStrategy() new (std::nothrow)LoadConfigFromDataProxyNodeStrategy(), new (std::nothrow)PermissionStrategy() }; - auto ret = strategies_.Init(list); - if (!ret) { - std::for_each(list.begin(), list.end(), [](Strategy *item) { - delete item; - }); - return strategies_; - } + strategies_.Init(list); return strategies_; } } // namespace OHOS::DataShare \ No newline at end of file diff --git a/services/distributeddataservice/service/data_share/strategies/template_strategy.cpp b/services/distributeddataservice/service/data_share/strategies/template_strategy.cpp index fd33112a7..da75f1b83 100644 --- a/services/distributeddataservice/service/data_share/strategies/template_strategy.cpp +++ b/services/distributeddataservice/service/data_share/strategies/template_strategy.cpp @@ -48,13 +48,7 @@ SeqStrategy &TemplateStrategy::GetStrategy() new (std::nothrow) LoadConfigCommonStrategy(), new (std::nothrow) LoadConfigFromDataProxyNodeStrategy() }; - auto ret = strategies_.Init(list); - if (!ret) { - std::for_each(list.begin(), list.end(), [](Strategy *item) { - delete item; - }); - return strategies_; - } + strategies_.Init(list); return strategies_; } } // namespace OHOS::DataShare \ No newline at end of file -- Gitee