reactive_graph_std_result/
plugin.rs

1use reactive_graph_plugin_api::prelude::plugin::*;
2use reactive_graph_plugin_api::prelude::providers::*;
3
4export_plugin!({
5    "dependencies": [
6        { "name": "reactive-graph-std-base", "version": ">=0.10.0, <0.11.0" }
7    ]
8});
9
10#[derive(Component)]
11pub struct ResultPlugin {
12    component_provider: Arc<dyn TypeProvider<Components> + Send + Sync>,
13
14    #[component(default = "component_provider_registry")]
15    component_provider_registry: Arc<dyn ComponentProviderRegistry + Send + Sync>,
16}
17
18#[async_trait]
19#[component_alias]
20impl Plugin for ResultPlugin {
21    async fn activate(&self) -> Result<(), PluginActivationError> {
22        self.component_provider_registry.register_provider(self.component_provider.clone()).await;
23        Ok(())
24    }
25
26    async fn deactivate(&self) -> Result<(), PluginDeactivationError> {
27        self.component_provider_registry.unregister_provider(self.component_provider.id()).await;
28        Ok(())
29    }
30}
31
32// use std::sync::Arc;
33// use std::sync::RwLock;
34//
35// use crate::di::*;
36// use crate::plugins::component_provider;
37// use crate::plugins::plugin_context::PluginContext;
38// use crate::plugins::ComponentProvider;
39// use crate::plugins::ComponentProviderError;
40// use crate::plugins::Plugin;
41// use crate::plugins::PluginContextDeinitializationError;
42// use crate::plugins::PluginContextInitializationError;
43// use crate::providers::ResultComponentProviderImpl;
44//
45// #[wrapper]
46// pub struct PluginContextContainer(RwLock<Option<Arc<dyn PluginContext>>>);
47//
48// #[provides]
49// fn create_empty_plugin_context_container() -> PluginContextContainer {
50//     PluginContextContainer(RwLock::new(None))
51// }
52//
53// pub trait ResultPlugin: Plugin + Send + Sync {}
54//
55// #[component]
56// pub struct ResultPluginImpl {
57//     component_provider: Wrc<ResultComponentProviderImpl>,
58//
59//     context: PluginContextContainer,
60// }
61//
62// interfaces!(ResultPluginImpl: dyn Plugin);
63//
64// #[provides]
65// impl ResultPlugin for ResultPluginImpl {}
66//
67// impl Plugin for ResultPluginImpl {
68//     fn set_context(&self, context: Arc<dyn PluginContext>) -> Result<(), PluginContextInitializationError> {
69//         self.context.0.write().unwrap().replace(context);
70//         Ok(())
71//     }
72//
73//     fn remove_context(&self) -> Result<(), PluginContextDeinitializationError> {
74//         let mut writer = self.context.0.write().unwrap();
75//         *writer = None;
76//         Ok(())
77//     }
78//
79//     fn get_component_provider(&self) -> Result<Option<Arc<dyn ComponentProvider>>, ComponentProviderError> {
80//         component_provider!(self.component_provider)
81//     }
82// }