Skip to main content

folk_plugin_grpc/
lib.rs

1mod config;
2mod metrics;
3mod plugin;
4mod service;
5
6pub use config::GrpcConfig;
7pub use plugin::GrpcPlugin;
8pub use service::GrpcEnvelope;
9
10use anyhow::Result;
11use folk_api::{Plugin, PluginFactory, ServerPluginWrapper};
12use serde_json::Value;
13
14struct GrpcPluginFactory;
15
16impl PluginFactory for GrpcPluginFactory {
17    fn create(&self, config: Value) -> Result<Box<dyn Plugin>> {
18        let config: GrpcConfig = serde_json::from_value(config)?;
19        Ok(Box::new(ServerPluginWrapper::new(GrpcPlugin::new(config))))
20    }
21}
22
23pub fn folk_plugin_factory() -> Box<dyn PluginFactory> {
24    Box::new(GrpcPluginFactory)
25}