Remove loading plugins from PluginManager constructor 57/32957/2
authorLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Tue, 30 Dec 2014 12:27:55 +0000 (13:27 +0100)
committerLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Tue, 30 Dec 2014 18:24:02 +0000 (19:24 +0100)
Loading plugins can be done also by offline API while executing
listing of available policy descriptions. That is why loading plugins
should be done only in case when database lock is aquired.

PluginManager::loadPlugin() has been changed to public and is
ran manually during cynara service startup.

Change-Id: Ie5b9276049bda08fb14d2a7620613afe5e0942f4

src/common/plugin/PluginManager.cpp
src/common/plugin/PluginManager.h
src/service/main/Cynara.cpp

index 853b719..e843895 100644 (file)
@@ -14,7 +14,7 @@
  *    limitations under the License.
  */
 /**
- * @file        src/service/plugin/PluginManager.cpp
+ * @file        src/common/plugin/PluginManager.cpp
  * @author      Zofia Abramowska <z.abramowska@samsung.com>
  * @version     1.0
  * @brief       Definition of PluginManager class
@@ -50,7 +50,6 @@ namespace {
 namespace Cynara {
 
 PluginManager::PluginManager(const std::string &pluginDir) : m_dir(pluginDir) {
-    loadPlugins();
 }
 
 PluginManager::~PluginManager(void) {
index 87b0597..b17e75b 100644 (file)
  *    limitations under the License.
  */
 /**
- * @file        src/service/plugin/PluginManager.h
+ * @file        src/common/plugin/PluginManager.h
  * @author      Zofia Abramowska <z.abramowska@samsung.com>
  * @version     1.0
  * @brief       Declaration of PluginManager class
  */
 
-#ifndef SRC_SERVICE_PLUGIN_PLUGINMANAGER_H_
-#define SRC_SERVICE_PLUGIN_PLUGINMANAGER_H_
+#ifndef SRC_COMMON_PLUGIN_PLUGINMANAGER_H_
+#define SRC_COMMON_PLUGIN_PLUGINMANAGER_H_
 
 #include <functional>
 #include <list>
@@ -39,10 +39,13 @@ typedef std::shared_ptr<ExternalPluginInterface> ExternalPluginPtr;
 class PluginManager {
 public:
     PluginManager(const std::string &pluginDir);
+    ~PluginManager();
+
+    void loadPlugins(void);
+
     ExternalPluginPtr getPlugin(PolicyType pType);
     std::vector<PolicyDescription> getPolicyDescriptions(void) const;
     void invalidateAll(void);
-    ~PluginManager();
 
 private:
     typedef std::unique_ptr<void, std::function<void (void*)>> PluginLibPtr;
@@ -52,9 +55,9 @@ private:
     std::map<PolicyDescription, ExternalPluginPtr> m_plugins;
     PluginLibs m_pluginLibs;
 
-    void loadPlugins(void);
     void openPlugin(const std::string &path);
 };
 
 } // namespace Cynara
-#endif /* SRC_SERVICE_PLUGIN_PLUGINMANAGER_H_ */
+
+#endif /* SRC_COMMON_PLUGIN_PLUGINMANAGER_H_ */
index a6b96c6..15ebd99 100644 (file)
@@ -66,6 +66,7 @@ void Cynara::init(void) {
 
     m_databaseLock.lock(); // Wait until database lock can be acquired
     m_storage->load();
+    m_pluginManager->loadPlugins();
 }
 
 void Cynara::run(void) {