aboutsummaryrefslogtreecommitdiffstats
path: root/parameter/SystemClass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'parameter/SystemClass.cpp')
-rw-r--r--parameter/SystemClass.cpp61
1 files changed, 19 insertions, 42 deletions
diff --git a/parameter/SystemClass.cpp b/parameter/SystemClass.cpp
index 6409c9b..d733dbd 100644
--- a/parameter/SystemClass.cpp
+++ b/parameter/SystemClass.cpp
@@ -38,6 +38,7 @@
#include "VirtualSubsystem.h"
#include "NamedElementBuilderTemplate.h"
#include <assert.h>
+#include "PluginLocation.h"
#define base CConfigurableElement
@@ -76,22 +77,33 @@ string CSystemClass::getKind() const
return "SystemClass";
}
-bool CSystemClass::loadSubsystems(string& strError, const vector<string>& astrPluginFolderPaths)
+bool CSystemClass::loadSubsystems(string& strError, const CSubsystemPlugins* pSubsystemPlugins)
{
CAutoLog autoLlog(this, "Loading subsystem plugins");
// Plugin list
list<string> lstrPluginFiles;
- uint32_t uiFolderLocation;
+ uint32_t uiPluginLocation;
- for (uiFolderLocation = 0; uiFolderLocation < astrPluginFolderPaths.size(); uiFolderLocation++) {
+ for (uiPluginLocation = 0; uiPluginLocation < pSubsystemPlugins->getNbChildren(); uiPluginLocation++) {
- // Folder for current SystemClass
- string strPluginPath = astrPluginFolderPaths[uiFolderLocation] + "/";
+ // Get Folder for current Plugin Location
+ const CPluginLocation* pPluginLocation = static_cast<const CPluginLocation*>(pSubsystemPlugins->getChild(uiPluginLocation));
+
+ const string& strFolder = pPluginLocation->getFolder();
+
+ // Iterator on Plugin List:
+ list<string>::const_iterator it;
+
+ const list<string>& pluginList = pPluginLocation->getPluginList();
+
+ for (it = pluginList.begin(); it != pluginList.end(); ++it) {
+
+ // Fill Plugin files list
+ lstrPluginFiles.push_back(strFolder + "/" + *it);
+ }
- // Get plugin list
- getPluginFiles(strPluginPath, lstrPluginFiles);
}
// Check at least one subsystem plugin available
if (!lstrPluginFiles.size()) {
@@ -132,41 +144,6 @@ bool CSystemClass::loadSubsystems(string& strError, const vector<string>& astrPl
return true;
}
-// Subsystem plugins
-bool CSystemClass::getPluginFiles(const string& strPluginPath, list<string>& lstrPluginFiles) const
-{
- log("Seeking subsystem plugins from folder \"%s\"", strPluginPath.c_str());
-
- DIR *dirp;
- struct dirent *dp;
-
- if ((dirp = opendir(strPluginPath.c_str())) == NULL) {
-
- return false;
- }
-
- const string strPluginPattern(gpcPluginPattern);
-
- // Parse it and load plugins
- while ((dp = readdir(dirp)) != NULL) {
-
- string strFileName(dp->d_name);
-
- // Check file name ends with pattern
- size_t uiPatternPos = strFileName.rfind(strPluginPattern, -1);
-
- if (uiPatternPos != (size_t)-1 && uiPatternPos == strFileName.size() - strPluginPattern.size()) {
- // Found plugin
- lstrPluginFiles.push_back(strPluginPath + strFileName);
- }
- }
-
- // Close plugin folder
- closedir(dirp);
-
- return true;
-}
-
// Plugin symbol computation
string CSystemClass::getPluginSymbol(const string& strPluginPath)
{