reactive_graph_remotes_impl/
remotes_system_impl.rs

1use std::sync::Arc;
2
3use async_trait::async_trait;
4use reactive_graph_config_api::ConfigSystem;
5use springtime_di::Component;
6use springtime_di::component_alias;
7
8use reactive_graph_lifecycle::Lifecycle;
9use reactive_graph_remotes_api::InstanceService;
10use reactive_graph_remotes_api::RemotesManager;
11use reactive_graph_remotes_api::RemotesSystem;
12
13#[derive(Component)]
14pub struct RemotesSystemImpl {
15    instance_service: Arc<dyn InstanceService + Send + Sync>,
16    remotes_manager: Arc<dyn RemotesManager + Send + Sync>,
17
18    config_system: Arc<dyn ConfigSystem + Send + Sync>,
19}
20
21#[async_trait]
22#[component_alias]
23impl RemotesSystem for RemotesSystemImpl {
24    fn get_instance_service(&self) -> Arc<dyn InstanceService + Send + Sync> {
25        self.instance_service.clone()
26    }
27
28    fn get_remotes_manager(&self) -> Arc<dyn RemotesManager + Send + Sync> {
29        self.remotes_manager.clone()
30    }
31
32    fn config_system(&self) -> Arc<dyn ConfigSystem + Send + Sync> {
33        self.config_system.clone()
34    }
35}
36
37#[async_trait]
38impl Lifecycle for RemotesSystemImpl {
39    async fn init(&self) {
40        self.instance_service.init().await;
41        self.remotes_manager.init().await;
42    }
43
44    async fn post_init(&self) {
45        self.instance_service.post_init().await;
46        self.remotes_manager.post_init().await;
47    }
48
49    async fn pre_shutdown(&self) {
50        self.remotes_manager.pre_shutdown().await;
51        self.instance_service.pre_shutdown().await;
52    }
53
54    async fn shutdown(&self) {
55        self.remotes_manager.shutdown().await;
56        self.instance_service.shutdown().await;
57    }
58}