PluginConcept » History » Version 6

« Previous - Version 6/10 (diff) - Next » - Current version
J. Moringen, 05/26/2011 08:28 PM
added other languages


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

Java Plugins

  • Are Jar files?
  • Configuration via options
    • plugins.java.path
    • plugins.java.load: Colon separated list of plugins that should be loaded.

Python Plugins

  • Are eggs?
  • Configuration via options
    • plugins.lisp.path: Colon separated list of directories which get added to sys.path?
    • plugins.lisp.load: Colon separated list of plugins that should be loaded.

Common Lisp Plugins

  • Are ASDF-Systems
  • Configuration via options
    • plugins.lisp.path
    • plugins.lisp.load: Colon separated list of plugins that should be loaded.

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