knowrob  2.1.0
A Knowledge Base System for Cognition-enabled Robots
knowrob::PluginManager< T > Class Template Referenceabstract

#include <PluginManager.h>

Public Member Functions

 PluginManager ()
 
virtual ~PluginManager ()
 
auto managerID () const
 
const auto & plugins () const
 
std::shared_ptr< NamedPlugin< T > > getPluginWithID (std::string_view pluginID)
 
virtual std::shared_ptr< NamedPlugin< T > > loadPlugin (const boost::property_tree::ptree &config)=0
 
virtual std::shared_ptr< NamedPlugin< T > > addPlugin (std::string_view reasonerID, PluginLanguage language, const std::shared_ptr< T > &reasoner)=0
 
void removePlugin (const std::shared_ptr< NamedPlugin< T >> &namedPlugin)
 
void removePlugin (std::string_view pluginID)
 
 PluginManager ()
 
virtual ~PluginManager ()
 
auto managerID () const
 
const auto & plugins () const
 
std::shared_ptr< NamedPlugin< T > > getPluginWithID (std::string_view pluginID)
 
virtual std::shared_ptr< NamedPlugin< T > > loadPlugin (const boost::property_tree::ptree &config)=0
 
virtual std::shared_ptr< NamedPlugin< T > > addPlugin (std::string_view reasonerID, PluginLanguage language, const std::shared_ptr< T > &reasoner)=0
 
void removePlugin (const std::shared_ptr< NamedPlugin< T >> &namedPlugin)
 
void removePlugin (std::string_view pluginID)
 

Static Public Member Functions

static PluginManager< T > * getManager (uint32_t managerID)
 
static bool addFactory (std::string_view typeName, const std::shared_ptr< PluginFactory< T >> &factory)
 
template<class U >
static bool addFactory (std::string_view typeName)
 
static PluginManager< T > * getManager (uint32_t managerID)
 
static bool addFactory (std::string_view typeName, const std::shared_ptr< PluginFactory< T >> &factory)
 
template<class U >
static bool addFactory (std::string_view typeName)
 

Protected Member Functions

std::shared_ptr< PluginLibrary< T > > loadSharedLibrary (std::string_view path)
 
std::shared_ptr< PluginModule< T > > loadPythonModule (std::string_view path, std::string_view type)
 
std::shared_ptr< PluginFactory< T > > findFactory (const boost::property_tree::ptree &config)
 
std::string getPluginID (const std::shared_ptr< PluginFactory< T >> &factory, const boost::property_tree::ptree &config)
 
std::shared_ptr< PluginLibrary< T > > loadSharedLibrary (std::string_view path)
 
std::shared_ptr< PluginModule< T > > loadPythonModule (std::string_view path, std::string_view type)
 
std::shared_ptr< PluginFactory< T > > findFactory (const boost::property_tree::ptree &config)
 
std::string getPluginID (const std::shared_ptr< PluginFactory< T >> &factory, const boost::property_tree::ptree &config)
 

Static Protected Member Functions

static uint32_t & managerIDCounter ()
 
static auto & pluginFactories ()
 
static auto & pluginManagers ()
 
static uint32_t & managerIDCounter ()
 
static auto & pluginFactories ()
 
static auto & pluginManagers ()
 

Protected Attributes

std::shared_ptr< std::map< uint32_t, PluginManager * > > pluginManagers_
 
std::mutex staticMutex_
 
uint32_t managerID_
 
uint32_t pluginIndex_ = 0
 
std::map< std::string_view, std::shared_ptr< NamedPlugin< T > >, std::less<> > pluginPool_
 
std::map< std::string, std::shared_ptr< PluginLibrary< T > >, std::less<> > loadedPlugins_
 
std::map< std::string, std::shared_ptr< PluginModule< T > >, std::less<> > loadedModules_
 

Detailed Description

template<class T>
class knowrob::PluginManager< T >

Manages a set of available plugins.

Template Parameters
Tthe type of the plugin.

Definition at line 26 of file PluginManager.h.

Constructor & Destructor Documentation

◆ PluginManager() [1/2]

template<class T >
knowrob::PluginManager< T >::PluginManager ( )
inline

Definition at line 28 of file PluginManager.h.

28  {
29  std::lock_guard<std::mutex> scoped_lock(staticMutex_);
32  (*pluginManagers_)[managerID_] = this;
33  }
std::shared_ptr< std::map< uint32_t, PluginManager * > > pluginManagers_
static uint32_t & managerIDCounter()
static auto & pluginManagers()

◆ ~PluginManager() [1/2]

template<class T >
virtual knowrob::PluginManager< T >::~PluginManager ( )
inlinevirtual

Definition at line 35 of file PluginManager.h.

35  {
36  {
37  std::lock_guard<std::mutex> scoped_lock(staticMutex_);
39  }
40 
41  for (auto &entry : loadedModules_) {
42  entry.second->unloadModule();
43  }
44  loadedModules_.clear();
45  loadedPlugins_.clear();
46  pluginPool_.clear();
47  }
std::map< std::string, std::shared_ptr< PluginLibrary< T > >, std::less<> > loadedPlugins_
std::map< std::string, std::shared_ptr< PluginModule< T > >, std::less<> > loadedModules_
std::map< std::string_view, std::shared_ptr< NamedPlugin< T > >, std::less<> > pluginPool_

◆ PluginManager() [2/2]

template<class T >
knowrob::PluginManager< T >::PluginManager ( )
inline

Definition at line 28 of file PluginManager.h.

28  {
29  std::lock_guard<std::mutex> scoped_lock(staticMutex_);
32  (*pluginManagers_)[managerID_] = this;
33  }

◆ ~PluginManager() [2/2]

template<class T >
virtual knowrob::PluginManager< T >::~PluginManager ( )
inlinevirtual

Definition at line 35 of file PluginManager.h.

35  {
36  {
37  std::lock_guard<std::mutex> scoped_lock(staticMutex_);
39  }
40 
41  for (auto &entry : loadedModules_) {
42  entry.second->unloadModule();
43  }
44  loadedModules_.clear();
45  loadedPlugins_.clear();
46  pluginPool_.clear();
47  }

Member Function Documentation

◆ addFactory() [1/4]

template<class T >
template<class U >
static bool knowrob::PluginManager< T >::addFactory ( std::string_view  typeName)
inlinestatic

Add a typed plugin factory to the manager.

Parameters
typeNamethe name of the plugin type

Definition at line 106 of file PluginManager.h.

106  {
107  return addFactory(typeName, std::make_shared<TypedPluginFactory<U, T>>(typeName));
108  }
static bool addFactory(std::string_view typeName, const std::shared_ptr< PluginFactory< T >> &factory)
Definition: PluginManager.h:92

◆ addFactory() [2/4]

template<class T >
template<class U >
static bool knowrob::PluginManager< T >::addFactory ( std::string_view  typeName)
inlinestatic

Add a typed plugin factory to the manager.

Parameters
typeNamethe name of the plugin type

Definition at line 106 of file PluginManager.h.

106  {
107  return addFactory(typeName, std::make_shared<TypedPluginFactory<U, T>>(typeName));
108  }

◆ addFactory() [3/4]

template<class T >
static bool knowrob::PluginManager< T >::addFactory ( std::string_view  typeName,
const std::shared_ptr< PluginFactory< T >> &  factory 
)
inlinestatic

Add a plugin factory to the manager. Note that factories for shared libraries are created on the fly, and thus do not need to be added manually.

Parameters
typeNamethe name of the plugin type
factorya plugin factory

Definition at line 92 of file PluginManager.h.

92  {
93  auto &factories = pluginFactories();
94  if (factories.find(typeName) != factories.end()) {
95  KB_WARN("overwriting factory for plugin type '{}'", typeName);
96  }
97  factories.emplace(typeName, factory);
98  return true;
99  }
#define KB_WARN
Definition: Logger.h:27
static auto & pluginFactories()

◆ addFactory() [4/4]

template<class T >
static bool knowrob::PluginManager< T >::addFactory ( std::string_view  typeName,
const std::shared_ptr< PluginFactory< T >> &  factory 
)
inlinestatic

Add a plugin factory to the manager. Note that factories for shared libraries are created on the fly, and thus do not need to be added manually.

Parameters
typeNamethe name of the plugin type
factorya plugin factory

Definition at line 92 of file PluginManager.h.

92  {
93  auto &factories = pluginFactories();
94  if (factories.find(typeName) != factories.end()) {
95  KB_WARN("overwriting factory for plugin type '{}'", typeName);
96  }
97  factories.emplace(typeName, factory);
98  return true;
99  }

◆ addPlugin() [1/2]

template<class T >
virtual std::shared_ptr<NamedPlugin<T> > knowrob::PluginManager< T >::addPlugin ( std::string_view  reasonerID,
PluginLanguage  language,
const std::shared_ptr< T > &  reasoner 
)
pure virtual

Add a plugin to this manager.

Parameters
reasonerIDthe name of the reasoner
languagethe language of the plugin
reasonerthe reasoner instance

Implemented in knowrob::ReasonerManager, and knowrob::ReasonerManager.

◆ addPlugin() [2/2]

template<class T >
virtual std::shared_ptr<NamedPlugin<T> > knowrob::PluginManager< T >::addPlugin ( std::string_view  reasonerID,
PluginLanguage  language,
const std::shared_ptr< T > &  reasoner 
)
pure virtual

Add a plugin to this manager.

Parameters
reasonerIDthe name of the reasoner
languagethe language of the plugin
reasonerthe reasoner instance

Implemented in knowrob::ReasonerManager, and knowrob::ReasonerManager.

◆ findFactory() [1/2]

template<class T >
std::shared_ptr<PluginFactory<T> > knowrob::PluginManager< T >::findFactory ( const boost::property_tree::ptree &  config)
inlineprotected

Definition at line 209 of file PluginManager.h.

209  {
210  auto lib = config.get_optional<std::string>("lib");
211  auto module = config.get_optional<std::string>("module");
212  auto type = config.get_optional<std::string>("type");
213 
214  if (lib.has_value()) {
215  return loadSharedLibrary(URI::resolve(lib.value()));
216  } else if (module.has_value()) {
217  if (type.has_value()) {
218  return loadPythonModule(URI::resolve(module.value()), type.value());
219  } else {
220  KB_WARN("modules require type key in settings, but it's missing for module '{}'.", module.value());
221  }
222  } else if (type.has_value()) {
223  // map type name to a factory
224  const auto &it = pluginFactories().find(type.value());
225  if (it == pluginFactories().end()) {
226  KB_WARN("no factory registered for plugin type '{}'.", type.value());
227  } else {
228  return it->second;
229  }
230  } else {
231  KB_WARN("missing 'type', 'lib' and 'module' key in plugin config.");
232  }
233  return {};
234  }
std::shared_ptr< PluginModule< T > > loadPythonModule(std::string_view path, std::string_view type)
std::shared_ptr< PluginLibrary< T > > loadSharedLibrary(std::string_view path)
static std::string resolve(const std::string_view &uriString)
Definition: URI.cpp:79
TermRule & string()
Definition: terms.cpp:63
const IRIAtomPtr type
Definition: rdf.h:15

◆ findFactory() [2/2]

template<class T >
std::shared_ptr<PluginFactory<T> > knowrob::PluginManager< T >::findFactory ( const boost::property_tree::ptree &  config)
inlineprotected

Definition at line 209 of file PluginManager.h.

209  {
210  auto lib = config.get_optional<std::string>("lib");
211  auto module = config.get_optional<std::string>("module");
212  auto type = config.get_optional<std::string>("type");
213 
214  if (lib.has_value()) {
215  return loadSharedLibrary(URI::resolve(lib.value()));
216  } else if (module.has_value()) {
217  if (type.has_value()) {
218  return loadPythonModule(URI::resolve(module.value()), type.value());
219  } else {
220  KB_WARN("modules require type key in settings, but it's missing for module '{}'.", module.value());
221  }
222  } else if (type.has_value()) {
223  // map type name to a factory
224  const auto &it = pluginFactories().find(type.value());
225  if (it == pluginFactories().end()) {
226  KB_WARN("no factory registered for plugin type '{}'.", type.value());
227  } else {
228  return it->second;
229  }
230  } else {
231  KB_WARN("missing 'type', 'lib' and 'module' key in plugin config.");
232  }
233  return {};
234  }

◆ getManager() [1/2]

template<class T >
static PluginManager<T>* knowrob::PluginManager< T >::getManager ( uint32_t  managerID)
inlinestatic
Parameters
managerIDthe ID of a plugin manager
Returns
the plugin manager, or nullptr if ID is unknown

Definition at line 63 of file PluginManager.h.

63  {
64  auto it = pluginManagers()->find(managerID);
65  if (it != pluginManagers()->end()) {
66  return it->second;
67  } else {
68  return nullptr;
69  }
70  }
auto managerID() const
Definition: PluginManager.h:52

◆ getManager() [2/2]

template<class T >
static PluginManager<T>* knowrob::PluginManager< T >::getManager ( uint32_t  managerID)
inlinestatic
Parameters
managerIDthe ID of a plugin manager
Returns
the plugin manager, or nullptr if ID is unknown

Definition at line 63 of file PluginManager.h.

63  {
64  auto it = pluginManagers()->find(managerID);
65  if (it != pluginManagers()->end()) {
66  return it->second;
67  } else {
68  return nullptr;
69  }
70  }

◆ getPluginID() [1/2]

template<class T >
std::string knowrob::PluginManager< T >::getPluginID ( const std::shared_ptr< PluginFactory< T >> &  factory,
const boost::property_tree::ptree &  config 
)
inlineprotected

Definition at line 237 of file PluginManager.h.

237  {
238  auto name = config.get_optional<std::string>("name");
239  if (name.has_value()) {
240  return name.value();
241  } else {
242  return std::string(factory->name()) + std::to_string(pluginIndex_++);
243  }
244  }

◆ getPluginID() [2/2]

template<class T >
std::string knowrob::PluginManager< T >::getPluginID ( const std::shared_ptr< PluginFactory< T >> &  factory,
const boost::property_tree::ptree &  config 
)
inlineprotected

Definition at line 237 of file PluginManager.h.

237  {
238  auto name = config.get_optional<std::string>("name");
239  if (name.has_value()) {
240  return name.value();
241  } else {
242  return std::string(factory->name()) + std::to_string(pluginIndex_++);
243  }
244  }

◆ getPluginWithID() [1/2]

template<class T >
std::shared_ptr<NamedPlugin<T> > knowrob::PluginManager< T >::getPluginWithID ( std::string_view  pluginID)
inline
Parameters
pluginIDa backend ID string.
Returns
a plugin instance or a null pointer reference.

Definition at line 76 of file PluginManager.h.

76  {
77  auto it = pluginPool_.find(pluginID);
78  if (it != pluginPool_.end()) {
79  return it->second;
80  } else {
81  return {};
82  }
83  }

◆ getPluginWithID() [2/2]

template<class T >
std::shared_ptr<NamedPlugin<T> > knowrob::PluginManager< T >::getPluginWithID ( std::string_view  pluginID)
inline
Parameters
pluginIDa backend ID string.
Returns
a plugin instance or a null pointer reference.

Definition at line 76 of file PluginManager.h.

76  {
77  auto it = pluginPool_.find(pluginID);
78  if (it != pluginPool_.end()) {
79  return it->second;
80  } else {
81  return {};
82  }
83  }

◆ loadPlugin() [1/2]

template<class T >
virtual std::shared_ptr<NamedPlugin<T> > knowrob::PluginManager< T >::loadPlugin ( const boost::property_tree::ptree &  config)
pure virtual

Load a new plugin instance into the plugin manager. The type of the plugin is determined based on either the value of "type", "lib" or "module" in the property tree root. The tree is further used to generate a plugin configuration. Plugin factories for libraries are created on the fly, the ones for built-in plugin types need to be added to the plugin manager before.

Parameters
configa property tree holding a plugin configuration

Implemented in knowrob::StorageManager, knowrob::ReasonerManager, knowrob::StorageManager, and knowrob::ReasonerManager.

◆ loadPlugin() [2/2]

template<class T >
virtual std::shared_ptr<NamedPlugin<T> > knowrob::PluginManager< T >::loadPlugin ( const boost::property_tree::ptree &  config)
pure virtual

Load a new plugin instance into the plugin manager. The type of the plugin is determined based on either the value of "type", "lib" or "module" in the property tree root. The tree is further used to generate a plugin configuration. Plugin factories for libraries are created on the fly, the ones for built-in plugin types need to be added to the plugin manager before.

Parameters
configa property tree holding a plugin configuration

Implemented in knowrob::StorageManager, knowrob::ReasonerManager, knowrob::StorageManager, and knowrob::ReasonerManager.

◆ loadPythonModule() [1/2]

template<class T >
std::shared_ptr<PluginModule<T> > knowrob::PluginManager< T >::loadPythonModule ( std::string_view  path,
std::string_view  type 
)
inlineprotected

Definition at line 193 of file PluginManager.h.

193  {
194  auto it = loadedModules_.find(path);
195  if (it == loadedModules_.end()) {
196  auto p = std::make_shared<PluginModule<T>>(path, type);
197  auto jt = loadedModules_.insert(std::pair<std::string,
198  std::shared_ptr<PluginModule<T>>>(path, p));
199  if (jt.first->second->loadModule()) {
200  return jt.first->second;
201  }
202  } else if (it->second->isLoaded()) {
203  return it->second;
204  }
205  KB_WARN("Failed to open plugin module at path '{}'.", path);
206  return {};
207  }

◆ loadPythonModule() [2/2]

template<class T >
std::shared_ptr<PluginModule<T> > knowrob::PluginManager< T >::loadPythonModule ( std::string_view  path,
std::string_view  type 
)
inlineprotected

Definition at line 193 of file PluginManager.h.

193  {
194  auto it = loadedModules_.find(path);
195  if (it == loadedModules_.end()) {
196  auto p = std::make_shared<PluginModule<T>>(path, type);
197  auto jt = loadedModules_.insert(std::pair<std::string,
198  std::shared_ptr<PluginModule<T>>>(path, p));
199  if (jt.first->second->loadModule()) {
200  return jt.first->second;
201  }
202  } else if (it->second->isLoaded()) {
203  return it->second;
204  }
205  KB_WARN("Failed to open plugin module at path '{}'.", path);
206  return {};
207  }

◆ loadSharedLibrary() [1/2]

template<class T >
std::shared_ptr<PluginLibrary<T> > knowrob::PluginManager< T >::loadSharedLibrary ( std::string_view  path)
inlineprotected

Definition at line 176 of file PluginManager.h.

176  {
177  auto absPath = std::filesystem::absolute(path);
178  auto it = loadedPlugins_.find(absPath);
179  if (it == loadedPlugins_.end()) {
180  auto p = std::make_shared<PluginLibrary<T>>(absPath.c_str());
181  auto jt = loadedPlugins_.insert(std::pair<std::string,
182  std::shared_ptr<PluginLibrary<T>>>(absPath, p));
183  if (jt.first->second->loadDLL()) {
184  return jt.first->second;
185  }
186  } else if (it->second->isLoaded()) {
187  return it->second;
188  }
189  KB_WARN("Failed to open plugin library at path '{}'.", path);
190  return {};
191  }

◆ loadSharedLibrary() [2/2]

template<class T >
std::shared_ptr<PluginLibrary<T> > knowrob::PluginManager< T >::loadSharedLibrary ( std::string_view  path)
inlineprotected

Definition at line 176 of file PluginManager.h.

176  {
177  auto absPath = std::filesystem::absolute(path);
178  auto it = loadedPlugins_.find(absPath);
179  if (it == loadedPlugins_.end()) {
180  auto p = std::make_shared<PluginLibrary<T>>(absPath.c_str());
181  auto jt = loadedPlugins_.insert(std::pair<std::string,
182  std::shared_ptr<PluginLibrary<T>>>(absPath, p));
183  if (jt.first->second->loadDLL()) {
184  return jt.first->second;
185  }
186  } else if (it->second->isLoaded()) {
187  return it->second;
188  }
189  KB_WARN("Failed to open plugin library at path '{}'.", path);
190  return {};
191  }

◆ managerID() [1/2]

template<class T >
auto knowrob::PluginManager< T >::managerID ( ) const
inline
Returns
the ID of this manager.

Definition at line 52 of file PluginManager.h.

52 { return managerID_; }

◆ managerID() [2/2]

template<class T >
auto knowrob::PluginManager< T >::managerID ( ) const
inline
Returns
the ID of this manager.

Definition at line 52 of file PluginManager.h.

52 { return managerID_; }

◆ managerIDCounter() [1/2]

template<class T >
static uint32_t& knowrob::PluginManager< T >::managerIDCounter ( )
inlinestaticprotected

Definition at line 159 of file PluginManager.h.

159  {
160  static uint32_t val = 0;
161  return val;
162  }

◆ managerIDCounter() [2/2]

template<class T >
static uint32_t& knowrob::PluginManager< T >::managerIDCounter ( )
inlinestaticprotected

Definition at line 159 of file PluginManager.h.

159  {
160  static uint32_t val = 0;
161  return val;
162  }

◆ pluginFactories() [1/2]

template<class T >
static auto& knowrob::PluginManager< T >::pluginFactories ( )
inlinestaticprotected

Definition at line 165 of file PluginManager.h.

165  {
166  static std::map<std::string, std::shared_ptr<PluginFactory<T>>, std::less<>> factories;
167  return factories;
168  }

◆ pluginFactories() [2/2]

template<class T >
static auto& knowrob::PluginManager< T >::pluginFactories ( )
inlinestaticprotected

Definition at line 165 of file PluginManager.h.

165  {
166  static std::map<std::string, std::shared_ptr<PluginFactory<T>>, std::less<>> factories;
167  return factories;
168  }

◆ pluginManagers() [1/2]

template<class T >
static auto& knowrob::PluginManager< T >::pluginManagers ( )
inlinestaticprotected

Definition at line 171 of file PluginManager.h.

171  {
172  static auto val = std::make_shared<std::map<uint32_t, PluginManager *>>();
173  return val;
174  }

◆ pluginManagers() [2/2]

template<class T >
static auto& knowrob::PluginManager< T >::pluginManagers ( )
inlinestaticprotected

Definition at line 171 of file PluginManager.h.

171  {
172  static auto val = std::make_shared<std::map<uint32_t, PluginManager *>>();
173  return val;
174  }

◆ plugins() [1/2]

template<class T >
const auto& knowrob::PluginManager< T >::plugins ( ) const
inline
Returns
map of all plugins defined by this manager.

Definition at line 57 of file PluginManager.h.

57 { return pluginPool_; }

◆ plugins() [2/2]

template<class T >
const auto& knowrob::PluginManager< T >::plugins ( ) const
inline
Returns
map of all plugins defined by this manager.

Definition at line 57 of file PluginManager.h.

57 { return pluginPool_; }

◆ removePlugin() [1/4]

template<class T >
void knowrob::PluginManager< T >::removePlugin ( const std::shared_ptr< NamedPlugin< T >> &  namedPlugin)
inline

Remove a plugin from this manager.

Parameters
namedPluginthe plugin to remove

Definition at line 134 of file PluginManager.h.

134 { pluginPool_.erase(namedPlugin->name()); }

◆ removePlugin() [2/4]

template<class T >
void knowrob::PluginManager< T >::removePlugin ( const std::shared_ptr< NamedPlugin< T >> &  namedPlugin)
inline

Remove a plugin from this manager.

Parameters
namedPluginthe plugin to remove

Definition at line 134 of file PluginManager.h.

134 { pluginPool_.erase(namedPlugin->name()); }

◆ removePlugin() [3/4]

template<class T >
void knowrob::PluginManager< T >::removePlugin ( std::string_view  pluginID)
inline

Remove a plugin from this manager.

Parameters
pluginIDthe ID of the plugin to remove

Definition at line 140 of file PluginManager.h.

140 { pluginPool_.erase(pluginID); }

◆ removePlugin() [4/4]

template<class T >
void knowrob::PluginManager< T >::removePlugin ( std::string_view  pluginID)
inline

Remove a plugin from this manager.

Parameters
pluginIDthe ID of the plugin to remove

Definition at line 140 of file PluginManager.h.

140 { pluginPool_.erase(pluginID); }

Member Data Documentation

◆ loadedModules_

template<class T >
std::map< std::string, std::shared_ptr< PluginModule< T > >, std::less<> > knowrob::PluginManager< T >::loadedModules_
protected

Definition at line 156 of file PluginManager.h.

◆ loadedPlugins_

template<class T >
std::map< std::string, std::shared_ptr< PluginLibrary< T > >, std::less<> > knowrob::PluginManager< T >::loadedPlugins_
protected

Definition at line 155 of file PluginManager.h.

◆ managerID_

template<class T >
uint32_t knowrob::PluginManager< T >::managerID_
protected

Definition at line 147 of file PluginManager.h.

◆ pluginIndex_

template<class T >
uint32_t knowrob::PluginManager< T >::pluginIndex_ = 0
protected

Definition at line 149 of file PluginManager.h.

◆ pluginManagers_

template<class T >
std::shared_ptr< std::map< uint32_t, PluginManager * > > knowrob::PluginManager< T >::pluginManagers_
protected

Definition at line 143 of file PluginManager.h.

◆ pluginPool_

template<class T >
std::map< std::string_view, std::shared_ptr< NamedPlugin< T > >, std::less<> > knowrob::PluginManager< T >::pluginPool_
protected

Definition at line 153 of file PluginManager.h.

◆ staticMutex_

template<class T >
std::mutex knowrob::PluginManager< T >::staticMutex_
protected

Definition at line 145 of file PluginManager.h.


The documentation for this class was generated from the following file: