Plugins

See also

Writing Plugins
Examples demonstrating how to write RSB plugins

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 configuration mechanism: for each implementation language of RSB, a language-specific section configures:

  • Means of locating plugins (e.g. dynamic linker searchpath for C++, classpath for Java, PYTHONPATH for Python)
  • Names of the plugins that should be loaded

C++ Plugins

In the C++ implementation of RSB, plugins are shared objects defining symbols

  1. rsc_plugin_init()
  2. rsc_plugin_shutdown()

Plugins are configured via the configuration 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/rsb0.8/plugins:/vol/cor/lib/rsb0.8/plugins
load = rsbspread:rsbvampire # no "libX" or filetype suffix like ".so"
RSB_PLUGINS_CPP_PATH=/vol/cor/lib/rsb0.8/plugins

The default searchpath for C++ plugins is

  1. HOME/.rsbVERSION/plugins
  2. PREFIX/lib/rsbVERSION/plugins

where HOME is the home directory of the current user, PREFIX is the prefix into which RSB has been installed and VERSION are the major and minor components of the current RSB version (0.11 for this version). Example:

  1. /homes/juser/.rsb0.8/plugins
  2. /usr/lib/rsb0.8/plugins

Python Plugins

Warning

This section is work in progress.

Python plugins are modules defining functions

  1. rsbPluginInit()
  2. rsbPluginShutdown()

Plugins are configured via the configuration options

plugins.python.path

Colon-separated list of directories which get added to sys.path?

plugins.python.load

Colon-separated list of plugins that should be loaded.

Java Plugins

Warning

This section is work in progress.

Java plugins are Jar files?

Plugins are configured via the configuration options

plugins.java.path

TODO

plugins.java.load

Colon-separated list of plugins that should be loaded.

Common Lisp Plugins

Warning

This section is work in progress.

Common Lisp plugins are ASDF-systems or FASL-bundles?

Plugins are configured via the configuration options

plugins.lisp.path

Colon-separated list of directories that should be searched for plugins.

plugins.lisp.load

Colon-separated list of plugins that should be loaded.

Implementations

Language File(s)
C++ implemented as part of the RSC library
Java not yet implemented
Python not yet implemented
Common Lisp not yet implemented