reactive_graph_plugin_service_api/
plugin_system.rs

1use std::sync::Arc;
2
3use async_trait::async_trait;
4use springtime_di::injectable;
5
6use crate::PluginContainerManager;
7use crate::PluginContextFactory;
8use crate::PluginRepositoryManager;
9use crate::PluginResolver;
10use reactive_graph_lifecycle::Lifecycle;
11
12#[injectable]
13#[async_trait]
14pub trait PluginSystem: Lifecycle {
15    fn get_plugin_context_factory(&self) -> Arc<dyn PluginContextFactory + Send + Sync>;
16
17    fn get_plugin_container_manager(&self) -> Arc<dyn PluginContainerManager + Send + Sync>;
18
19    fn get_plugin_repository_manager(&self) -> Arc<dyn PluginRepositoryManager + Send + Sync>;
20
21    fn get_plugin_resolver(&self) -> Arc<dyn PluginResolver + Send + Sync>;
22}