reactive_graph_plugin_service_impl/
registrar.rs1use 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}