23 releases (4 stable)
new 1.0.3 | Nov 21, 2024 |
---|---|
1.0.1 | Oct 31, 2024 |
1.0.0-alpha.5 | Jul 26, 2024 |
0.11.0 | Jun 4, 2024 |
0.5.0-beta.9 | Nov 24, 2021 |
#1908 in Network programming
20,576 downloads per month
Used in 42 crates
(14 directly)
560KB
12K
SLoC
⚠️ WARNING ⚠️
This crate is intended for Zenoh's internal use.
lib.rs
:
The plugin infrastructure for Zenoh.
To build a plugin, implement Plugin
.
If building a plugin for zenohd
, you should use the types exported in zenoh::plugins
to fill Plugin
's associated types.
To check your plugin typing for zenohd
, have your plugin implement zenoh::plugins::ZenohPlugin
Plugin is a struct which implements the Plugin
trait. This trait has two associated types:
StartArgs
: the type of the arguments passed to the plugin'sstart
function.Instance
: the type of the plugin's instance.
The actual work of the plugin is performed by the instance, which is created by the start
function.
Plugins are loaded, started and stopped by PluginsManager
. Stopping plugin is just dropping it's instance.
Plugins can be static and dynamic.
Static plugin is just a type which implements Plugin
trait. It can be added to PluginsManager
by PluginsManager::declare_static_plugin
method.
Dynamic plugin is a shared library which exports set of C-repr (unmangled) functions which allows to check plugin compatibility and create plugin instance. These functions are defined automatically by declare_plugin
macro.
Dependencies
~14–25MB
~356K SLoC