summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/PluginManagerI.cpp14
-rw-r--r--cpp/src/Ice/PluginManagerI.h1
2 files changed, 15 insertions, 0 deletions
diff --git a/cpp/src/Ice/PluginManagerI.cpp b/cpp/src/Ice/PluginManagerI.cpp
index 6e1e2f99449..75c9e70d4f6 100644
--- a/cpp/src/Ice/PluginManagerI.cpp
+++ b/cpp/src/Ice/PluginManagerI.cpp
@@ -68,6 +68,20 @@ Ice::PluginManagerI::initializePlugins()
_initialized = true;
}
+StringSeq
+Ice::PluginManagerI::getPlugins()
+{
+ IceUtil::Mutex::Lock sync(*this);
+
+ StringSeq names;
+ map<string, PluginPtr>::iterator r;
+ for(r = _plugins.begin(); r != _plugins.end(); ++r)
+ {
+ names.push_back((*r).first);
+ }
+ return names;
+}
+
PluginPtr
Ice::PluginManagerI::getPlugin(const string& name)
{
diff --git a/cpp/src/Ice/PluginManagerI.h b/cpp/src/Ice/PluginManagerI.h
index 659d435eb9a..65bd9134ab6 100644
--- a/cpp/src/Ice/PluginManagerI.h
+++ b/cpp/src/Ice/PluginManagerI.h
@@ -26,6 +26,7 @@ class PluginManagerI : public PluginManager, public IceUtil::Mutex
public:
virtual void initializePlugins();
+ virtual StringSeq getPlugins();
virtual PluginPtr getPlugin(const std::string&);
virtual void addPlugin(const std::string&, const PluginPtr&);
virtual void destroy();