PluginConcept » History » Version 4

Version 3 (J. Moringen, 05/20/2011 12:16 PM) → Version 4/10 (J. Moringen, 05/26/2011 06:00 AM)

h1. Overview

* Plugins are loaded at initialization time
** This means, registration of provided converters and connectors happens during initialization
** This is required in order for RSB to be able inquire about capabilities and configuration of converters and connectors
* Selection and loading of plugins is configured using the [[Configuration|usual mechanism]]
** An implementation-language-specific section configures
*** Means of locating plugins (e.g. searchpath, classpath, PYTHONPATH)
*** Names of the plugins that should be loaded

h2. C++ Plugins

* Are shared objects
* Configuration via options
** @plugins.c++.path@: Colon separated list of directories in which expanded (e.g. @rsbspread DIRECTORY/librsbspread.so@ on linux) plugin libraries will be searched
** @plugins.c++.libraries@: Colon separated list of plugin names (no including prefixes like "lib" of suffixes like ".so" or ".dll")

Configuration Examples:
<pre>
[plugins.cpp]
path = /vol/vampire/lib:/vol/cor/lib
libraries = rsbspread:rsbvampire # no filetype suffix
</pre>

<pre>
RSB_PLUGINS_CPP_PATH=/vol/cor/lib
</pre>

h2. Interaction with Introspection of Configuation Options

The following protocol should be sufficient

# Setup fundamental configuration options (debugging, plugin loading, etc.)
# Process configuration sources
# Load requested plugins
#* Plugins register connector implementations, converters, etc.
# Introspect connector implementations to discover additional configuration options
# Update configuration options
# Process configuration sources again