From: Sangwan Kwon Date: Wed, 25 Sep 2019 11:17:43 +0000 (+0900) Subject: Apply meyer's singleton to policy-manager X-Git-Tag: submit/tizen/20200810.073515~192 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=57fe85260c4fbdec5abfdd85dc47fb836b3ddac7;p=platform%2Fcore%2Fsecurity%2Fvist.git Apply meyer's singleton to policy-manager Signed-off-by: Sangwan Kwon --- diff --git a/src/policyd/core/policy-manager.h b/src/policyd/core/policy-manager.h index 63736b0..07fdedf 100644 --- a/src/policyd/core/policy-manager.h +++ b/src/policyd/core/policy-manager.h @@ -29,12 +29,24 @@ namespace policyd { class PolicyManager final { public: - explicit PolicyManager() : storage(DB_PATH) {} + PolicyManager(const PolicyManager&) = delete; + PolicyManager& operator=(const PolicyManager&) = delete; + + PolicyManager(PolicyManager&&) = delete; + PolicyManager& operator=(PolicyManager&&) = delete; + + static PolicyManager& instance() { + static PolicyManager manager; + return manager; + } std::pair loadProviders(const std::string& path); int loadPolicies(); private: + explicit PolicyManager() : storage(DB_PATH) {} + ~PolicyManager() = default; + PolicyStorage storage; std::vector> providers; diff --git a/src/policyd/core/tests/core-tests.cpp b/src/policyd/core/tests/core-tests.cpp index f3a8913..d86bc97 100644 --- a/src/policyd/core/tests/core-tests.cpp +++ b/src/policyd/core/tests/core-tests.cpp @@ -23,12 +23,12 @@ using namespace policyd; class PolicyCoreTests : public testing::Test {}; TEST_F(PolicyCoreTests, policy_loader) { - PolicyManager pm; - auto result = pm.loadProviders(PLUGIN_INSTALL_DIR); + auto& manager = PolicyManager::instance(); + auto result = manager.loadProviders(PLUGIN_INSTALL_DIR); EXPECT_TRUE(result.first > 0); EXPECT_TRUE(result.second == 0); - auto size = pm.loadPolicies(); + auto size = manager.loadPolicies(); EXPECT_TRUE(size > 0); }