[ https://issues.apache.org/jira/browse/QPID-732?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alan Conway reassigned QPID-732: -------------------------------- Assignee: Alan Conway > Plugin-Module support added, several TODOs completed > ---------------------------------------------------- > > Key: QPID-732 > URL: https://issues.apache.org/jira/browse/QPID-732 > Project: Qpid > Issue Type: New Feature > Components: C++ Broker > Reporter: Ted Ross > Assignee: Alan Conway > Attachments: qpid-patch17.diff > > > The attached patch provides support for plugin modules in the C++ broker. > - Plugins are supported (--load <lib>, --load-dir <dir> options provided) > - Command options may be extended by plugins. > - A workaround was added to make config-file parsing tolerant of > unregistered options. > - Store-specific options were removed so they can be supplied by a plugin > - A pre-log facility was introduced so log messages can be generated prior > to the initialization of the logging module. > File-by-file details: > M cpp/src/qpidd.cpp > Added support for loadable plugin modules. This involves a > two-phased handling of command line/config options. Phase-1 > determines which modules to load and phase-2 is based on all of > the command-line options supplied by qpidd and the loaded > plugins. > Also added a pre-log facility so log messages can be generated > prior to the initialization of the log module. > M cpp/src/Makefile.am > Added dependency for boost_filesystem library. > M cpp/src/qpid/Plugin.h > Added 'earlyInitialize' method. Plugins are now initialized at > two points: earlyInitialize is called prior to broker > initialization and initialize is called at the end of broker > init. This allows modules like the store to be hooked in early > and other modules to be able to assume that the broker target is > fully functional. > M cpp/src/qpid/cluster/ClusterPlugin.cpp > Added stub for the new pure-virtual earlyInitialize method. > M cpp/src/qpid/Options.h > M cpp/src/qpid/Options.cpp > Added 'allowUnknown' option in the parse method. This is needed > in phase-1 command processing when there are options for > not-yet-loaded plugin modules. > Because the stable version of boost does not permit 'allowUnknown' > for config files, a workaround has been implemented in this module > to pre-filter the config file text removing lines that represent > unknown options. > M cpp/src/qpid/broker/Broker.h > M cpp/src/qpid/broker/Broker.cpp > Removed all store-specific command options. Updated logic to > allow the store to be a plugin module. > M cpp/src/qpid/broker/DtxManager.h > M cpp/src/qpid/broker/DtxManager.cpp > M cpp/src/qpid/broker/QueueRegistry.h > M cpp/src/qpid/broker/QueueRegistry.cpp > Changed API to these classes such that the store is no longer > supplied in the constructor but is supplied later, before any > operations are called for. > M cpp/src/qpid/broker/MessageStoreModule.h > M cpp/src/qpid/broker/MessageStoreModule.cpp > This module is still needed to provide "exception transfer" > service. It was changed to not load the store module but rather > use the already-loaded plugin store. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.