Template Class AbstractPluginManager

Class Documentation

template<typename PluginType>
class AbstractPluginManager

Public Types

typedef std::function<typename PluginType::Ptr(const std::string &plugin)> loadPluginFunction
typedef std::function<bool(const std::string &name, const typename PluginType::Ptr &plugin_ptr)> initPluginFunction

Public Functions

AbstractPluginManager(const std::string &param_name, const loadPluginFunction &loadPlugin, const initPluginFunction &initPlugin, const rclcpp::Node::SharedPtr &node_handle)
bool loadPlugins()

Returns false if no plugins were loaded. Returns true if at least one plugin was loaded.

bool hasPlugin(const std::string &name) const
std::string getType(const std::string &name) const
std::vector<std::string> getLoadedNames() const
PluginType::Ptr getPlugin(const std::string &name)
void clearPlugins()

Protected Attributes

std::unordered_map<std::string, std::string> configured_plugins_

maps plugin names to plugin types, as defined by ros params.

std::unordered_map<std::string, typename PluginType::Ptr> loaded_plugins_

maps plugin names to instances of loaded plugins

const std::string param_name_
const loadPluginFunction loadPlugin_
const initPluginFunction initPlugin_
rclcpp::Node::SharedPtr node_handle_