reactive_graph_plugin_service_impl/
registrar.rs

1use std::sync::Arc;
2
3use reactive_graph_plugin_api::Plugin;
4use reactive_graph_plugin_api::PluginContext;
5
6use crate::PluginProxy;
7
8pub(crate) struct PluginRegistrar {
9    pub(crate) plugin: Option<Arc<PluginProxy>>,
10    pub(crate) context: Arc<dyn PluginContext + Send + Sync>,
11}
12
13impl PluginRegistrar {
14    pub fn new(context: Arc<dyn PluginContext + Send + Sync>) -> PluginRegistrar {
15        PluginRegistrar { plugin: None, context }
16    }
17}
18
19impl reactive_graph_plugin_api::PluginRegistrar for PluginRegistrar {
20    fn register_plugin(&mut self, plugin: Box<Arc<dyn Plugin>>) {
21        self.plugin = Some(Arc::new(PluginProxy { plugin }));
22    }
23
24    fn context(&self) -> Arc<dyn PluginContext + Send + Sync> {
25        self.context.clone()
26    }
27}