PluginConcept » History » Version 4

« Previous - Version 4/10 (diff) - Next » - Current version
J. Moringen, 05/26/2011 06:00 AM
added "Interaction with Introspection of Configuation Options"


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 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

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:

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

RSB_PLUGINS_CPP_PATH=/vol/cor/lib

Interaction with Introspection of Configuation Options

The following protocol should be sufficient

  1. Setup fundamental configuration options (debugging, plugin loading, etc.)
  2. Process configuration sources
  3. Load requested plugins
    • Plugins register connector implementations, converters, etc.
  4. Introspect connector implementations to discover additional configuration options
  5. Update configuration options
  6. Process configuration sources again