PluginConcept » History » Version 5

« Previous - Version 5/10 (diff) - Next » - Current version
J. Moringen, 05/26/2011 08:14 PM
fixed option names; other minor corrects


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.cpp.path: Colon separated list of directories in which expanded (e.g. rsbspread DIRECTORY/librsbspread.so on linux) plugin libraries will be searched
    • plugins.cpp.load: Colon separated list of plugins that should be loaded. (Names do not include prefixes like "lib" of suffixes like ".so" or ".dll")

Configuration Examples:

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

RSB_PLUGINS_CPP_PATH=/vol/cor/lib

Interaction with Introspection of Configuration 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