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