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<int, int> loadProviders(const std::string& path);
int loadPolicies();
private:
+ explicit PolicyManager() : storage(DB_PATH) {}
+ ~PolicyManager() = default;
+
PolicyStorage storage;
std::vector<std::shared_ptr<PolicyProvider>> providers;
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);
}