pub trait PluginInfo {
// Required methods
fn manifest(
&mut self,
) -> impl Future<Output = Result<Manifest, CallError>> + Send;
fn load_config(
&mut self,
streams: Vec<StreamConfig>,
actions: Vec<ActionConfig>,
) -> impl Future<Output = RemoteResult<(Vec<StreamImpl>, Vec<ActionImpl>)>> + Send;
fn start(&mut self) -> impl Future<Output = RemoteResult<()>> + Send;
fn close(self) -> impl Future<Output = RemoteResult<()>> + Send;
}Expand description
The only trait that must be implemented by a plugin. It provides lists of stream, filter and action types implemented by a dynamic plugin.
Required Methods§
Sourcefn manifest(
&mut self,
) -> impl Future<Output = Result<Manifest, CallError>> + Send
fn manifest( &mut self, ) -> impl Future<Output = Result<Manifest, CallError>> + Send
Return the manifest of the plugin. This should not be dynamic, and return always the same manifest.
Example implementation:
Ok(Manifest {
hello: Hello::new(),
streams: BTreeSet::from(["mystreamtype".into()]),
actions: BTreeSet::from(["myactiontype".into()]),
})First function called.
Sourcefn load_config(
&mut self,
streams: Vec<StreamConfig>,
actions: Vec<ActionConfig>,
) -> impl Future<Output = RemoteResult<(Vec<StreamImpl>, Vec<ActionImpl>)>> + Send
fn load_config( &mut self, streams: Vec<StreamConfig>, actions: Vec<ActionConfig>, ) -> impl Future<Output = RemoteResult<(Vec<StreamImpl>, Vec<ActionImpl>)>> + Send
Load all plugin stream and action configurations. Must error if config is invalid.
The plugin should not start running mutable commands here: It should be ok to quit without cleanup for now.
Each StreamConfig from the streams arg should result in a corresponding StreamImpl returned, in the same order.
Each ActionConfig from the actions arg should result in a corresponding ActionImpl returned, in the same order.
Function called after PluginInfo::manifest.
Sourcefn start(&mut self) -> impl Future<Output = RemoteResult<()>> + Send
fn start(&mut self) -> impl Future<Output = RemoteResult<()>> + Send
Notify the plugin that setup is finished, permitting a last occasion to report an error that’ll make reaction exit. All initialization (opening remote connections, starting streams, etc) should happen here.
Function called after PluginInfo::load_config.
Sourcefn close(self) -> impl Future<Output = RemoteResult<()>> + Send
fn close(self) -> impl Future<Output = RemoteResult<()>> + Send
Notify the plugin that reaction is quitting and that the plugin should quit too. A few seconds later, the plugin will receive SIGTERM. A few seconds later, the plugin will receive SIGKILL.
Function called after PluginInfo::start, when reaction is quitting.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.