Skip to main content

folk_plugin_process/
lib.rs

1pub mod config;
2pub mod metrics;
3pub mod plugin;
4pub mod supervisor;
5
6use anyhow::{Context, Result};
7use folk_api::{Plugin, PluginFactory, ServerPluginWrapper};
8use serde_json::Value;
9
10pub use config::ProcessConfig;
11pub use plugin::ProcessPlugin;
12
13struct ProcessPluginFactory;
14
15impl PluginFactory for ProcessPluginFactory {
16    fn create(&self, config: Value) -> Result<Box<dyn Plugin>> {
17        let config: ProcessConfig =
18            serde_json::from_value(config).context("invalid [process] configuration")?;
19        Ok(Box::new(ServerPluginWrapper::new(ProcessPlugin::new(
20            config,
21        ))))
22    }
23}
24
25pub fn folk_plugin_factory() -> Box<dyn PluginFactory> {
26    Box::new(ProcessPluginFactory)
27}