pion::platform::PluginConfig< PluginType > Class Template Reference

#include <PluginConfig.hpp>

Inherits pion::platform::ConfigManager.

Inherited by pion::platform::CodecFactory, pion::platform::DatabaseManager, pion::platform::ProtocolFactory, pion::platform::ReactionEngine, and pion::server::ServiceManager.

List of all members.


Detailed Description

template<typename PluginType>
class pion::platform::PluginConfig< PluginType >

PluginConfig: manages a collection of plug-ins and their configuration settings

Definition at line 42 of file PluginConfig.hpp.

Public Member Functions

virtual ~PluginConfig ()
 virtual destructor: this class is meant to be extended
virtual void createConfigFile (void)
 creates a new plug-in config file that includes the Pion "config" element
virtual void openConfigFile (void)
 opens an existing configuration file and loads the plug-ins it contains
virtual void writeConfigXML (std::ostream &out) const
bool writeConfigXML (std::ostream &out, const std::string &plugin_id) const
xmlNodePtr getPluginConfig (const std::string &plugin_id)
bool hasPlugin (const std::string &plugin_id) const
template<typename PluginUpdateFunction>
boost::signals::connection registerForUpdates (PluginUpdateFunction f) const
void updateVocabulary (void)
 this updates the Vocabularies used by all plug-ins
VocabularyPtr getVocabulary (void) const
 returns a copy of the universal Vocabulary
const VocabularyManagergetVocabularyManager (void) const
 returns a reference to the global VocabularyManager

Protected Member Functions

void releasePlugins (void)
 releases all code for managed plugins
 PluginConfig (const VocabularyManager &vocab_mgr, const std::string &config_file, const std::string &plugin_element)
void setPluginConfig (const std::string &plugin_id, const xmlNodePtr config_ptr)
std::string addPlugin (const xmlNodePtr config_ptr)
void removePlugin (const std::string &plugin_id)
virtual void addPluginNoLock (const std::string &plugin_id, const std::string &plugin_name, const xmlNodePtr config_ptr)=0

Protected Attributes

const VocabularyManagerm_vocab_mgr
 references the VocabularyManager used by plug-ins to describe Terms
const std::string m_plugin_element
 name of the plug-in element for Pion XML config files
PluginManager< PluginType > m_plugins
 collection of plug-in objects being managed
boost::signals::scoped_connection m_vocab_connection
 connection to this object from the VocabularyManager
boost::signal0< void > m_signal_plugins_updated
 signal triggered whenever a plug-in is modified
boost::mutex m_signal_mutex
 mutex used to protect the updated signal handler
boost::mutex m_mutex
 mutex to make class thread-safe

Classes

class  PluginException
 exception used to propagate exceptions thrown by Pion plugins More...


Constructor & Destructor Documentation

template<typename PluginType>
pion::platform::PluginConfig< PluginType >::PluginConfig ( const VocabularyManager vocab_mgr,
const std::string &  config_file,
const std::string &  plugin_element 
) [inline, protected]

protected constructor: this should only be used by derived classes

Parameters:
vocab_mgr the global manager of Vocabularies
default_config_file the default configuration file to use
plugin_element the name of the plug-in element node

Definition at line 161 of file PluginConfig.hpp.


Member Function Documentation

template<typename PluginType>
std::string pion::platform::PluginConfig< PluginType >::addPlugin ( const xmlNodePtr  config_ptr  )  [inline, protected]

adds a new plug-in object

Parameters:
config_ptr pointer to a list of XML nodes containing plug-in configuration parameters (must include a Plugin type)
Returns:
std::string string containing the plug-in's auto-generated identifier

Definition at line 303 of file PluginConfig.hpp.

References pion::platform::ConfigManager::addPluginConfig(), pion::platform::PluginConfig< PluginType >::addPluginNoLock(), pion::platform::ConfigManager::configIsOpen(), pion::platform::ConfigManager::createUUID(), pion::platform::ConfigManager::getConfigFile(), pion::platform::ConfigManager::getConfigOption(), pion::platform::ConfigManager::m_logger, pion::platform::PluginConfig< PluginType >::m_mutex, pion::platform::PluginConfig< PluginType >::m_plugin_element, pion::platform::PluginConfig< PluginType >::m_signal_mutex, pion::platform::PluginConfig< PluginType >::m_signal_plugins_updated, and pion::platform::ConfigManager::PLUGIN_ELEMENT_NAME.

template<typename PluginType>
virtual void pion::platform::PluginConfig< PluginType >::addPluginNoLock ( const std::string &  plugin_id,
const std::string &  plugin_name,
const xmlNodePtr  config_ptr 
) [protected, pure virtual]

adds a new plug-in object (without locking or config file updates). This function must be defined properly for any derived classes that wish to use openPluginConfig().

Parameters:
plugin_id unique identifier associated with the plug-in
plugin_name the name of the plug-in to load (searches plug-in directories and appends extensions)
config_ptr pointer to a list of XML nodes containing plug-in configuration parameters

Reimplemented from pion::platform::ConfigManager.

Implemented in pion::platform::CodecFactory, pion::platform::DatabaseManager, pion::platform::ProtocolFactory, and pion::server::ServiceManager.

Referenced by pion::platform::PluginConfig< PluginType >::addPlugin().

template<typename PluginType>
xmlNodePtr pion::platform::PluginConfig< PluginType >::getPluginConfig ( const std::string &  plugin_id  )  [inline]

returns an XML tree representing the configuration for a plug-in

Parameters:
plugin_id unique identifier associated with the plug-in
Returns:
xmlNodePtr pointer to a list of XML nodes containing plug-in configuration parameters; the parameters are copied, so the caller is responsible for freeing the list when finished

Definition at line 262 of file PluginConfig.hpp.

References pion::platform::ConfigManager::findConfigNodeByAttr(), pion::platform::ConfigManager::ID_ATTRIBUTE_NAME, pion::platform::ConfigManager::m_config_node_ptr, pion::platform::PluginConfig< PluginType >::m_mutex, and pion::platform::PluginConfig< PluginType >::m_plugin_element.

template<typename PluginType>
bool pion::platform::PluginConfig< PluginType >::hasPlugin ( const std::string &  plugin_id  )  const [inline]

checks to see if a plugin is recognized (plugin_id is valid)

Parameters:
plugin_id unique identifier associated with the plugin

Definition at line 119 of file PluginConfig.hpp.

Referenced by pion::plugins::MonitorService::operator()(), pion::plugins::FeedService::operator()(), pion::plugins::ConfigService::operator()(), pion::platform::ReactionEngine::removalAllowed(), and pion::platform::ReactionEngine::updateAllowed().

template<typename PluginType>
template<typename PluginUpdateFunction>
boost::signals::connection pion::platform::PluginConfig< PluginType >::registerForUpdates ( PluginUpdateFunction  f  )  const [inline]

registers a callback function to be executed whenever plug-ins are updated

Parameters:
f the callback function to register
Returns:
boost::signals::connection object representing the signal connection

Definition at line 130 of file PluginConfig.hpp.

Referenced by pion::platform::ReactionEngine::ReactionEngine(), and pion::server::ServiceManager::ServiceManager().

template<typename PluginType>
void pion::platform::PluginConfig< PluginType >::removePlugin ( const std::string &  plugin_id  )  [inline, protected]

removes a plug-in object

Parameters:
plugin_id unique identifier associated with the plug-in

Definition at line 334 of file PluginConfig.hpp.

References pion::platform::ConfigManager::configIsOpen(), pion::platform::ConfigManager::getConfigFile(), pion::PluginManager< PLUGIN_TYPE >::getLibPtr(), pion::platform::ConfigManager::m_logger, pion::platform::PluginConfig< PluginType >::m_mutex, pion::platform::PluginConfig< PluginType >::m_plugin_element, pion::platform::PluginConfig< PluginType >::m_plugins, pion::platform::PluginConfig< PluginType >::m_signal_mutex, pion::platform::PluginConfig< PluginType >::m_signal_plugins_updated, pion::PluginManager< PLUGIN_TYPE >::remove(), and pion::platform::ConfigManager::removePluginConfig().

template<typename PluginType>
void pion::platform::PluginConfig< PluginType >::setPluginConfig ( const std::string &  plugin_id,
const xmlNodePtr  config_ptr 
) [inline, protected]

sets configuration parameters for a managed plug-in

Parameters:
plugin_id unique identifier associated with the plug-in
config_ptr pointer to a list of XML nodes containing plug-in configuration parameters

Definition at line 278 of file PluginConfig.hpp.

References pion::platform::ConfigManager::configIsOpen(), pion::platform::ConfigManager::getConfigFile(), pion::platform::VocabularyManager::getVocabulary(), pion::platform::ConfigManager::m_logger, pion::platform::PluginConfig< PluginType >::m_mutex, pion::platform::PluginConfig< PluginType >::m_plugin_element, pion::platform::PluginConfig< PluginType >::m_plugins, pion::platform::PluginConfig< PluginType >::m_signal_mutex, pion::platform::PluginConfig< PluginType >::m_signal_plugins_updated, pion::platform::PluginConfig< PluginType >::m_vocab_mgr, pion::PluginManager< PLUGIN_TYPE >::run(), and pion::platform::ConfigManager::setPluginConfig().

template<typename PluginType>
bool pion::platform::PluginConfig< PluginType >::writeConfigXML ( std::ostream &  out,
const std::string &  plugin_id 
) const [inline]

writes the configuration data for a particular plug-in (as XML)

Parameters:
out the ostream to write the configuration tree into
plugin_id unique identifier associated with the plug-in

Definition at line 241 of file PluginConfig.hpp.

References pion::platform::ConfigManager::findConfigNodeByAttr(), pion::platform::ConfigManager::ID_ATTRIBUTE_NAME, pion::platform::ConfigManager::m_config_node_ptr, pion::platform::PluginConfig< PluginType >::m_mutex, pion::platform::PluginConfig< PluginType >::m_plugin_element, pion::platform::ConfigManager::writeBeginPionConfigXML(), pion::platform::ConfigManager::writeConfigXML(), and pion::platform::ConfigManager::writeEndPionConfigXML().

template<typename PluginType>
virtual void pion::platform::PluginConfig< PluginType >::writeConfigXML ( std::ostream &  out  )  const [inline, virtual]

writes the entire configuration tree to an output stream (as XML)

Parameters:
out the ostream to write the configuration tree into

Reimplemented from pion::platform::ConfigManager.

Definition at line 88 of file PluginConfig.hpp.

Referenced by pion::plugins::ConfigService::operator()().


The documentation for this class was generated from the following file:
Generated on Wed Apr 13 16:38:36 2011 for pion-platform by  doxygen 1.4.7