reactive_graph_plugin_service_impl/
proxy.rs

1use std::sync::Arc;
2
3use async_trait::async_trait;
4
5use reactive_graph_plugin_api::Plugin;
6use reactive_graph_plugin_api::PluginActivationError;
7use reactive_graph_plugin_api::PluginDeactivationError;
8
9/// A proxy object which wraps a [`Plugin`] and makes sure it can't outlive
10/// the library it came from.
11pub struct PluginProxy {
12    pub(crate) plugin: Box<Arc<dyn Plugin>>,
13}
14
15#[async_trait]
16impl Plugin for PluginProxy {
17    async fn activate(&self) -> Result<(), PluginActivationError> {
18        self.plugin.activate().await
19    }
20
21    async fn deactivate(&self) -> Result<(), PluginDeactivationError> {
22        self.plugin.deactivate().await
23    }
24}