fakecloud_core/
registry.rs1use crate::service::AwsService;
2use std::collections::HashMap;
3use std::sync::Arc;
4
5#[derive(Default)]
7pub struct ServiceRegistry {
8 services: HashMap<String, Arc<dyn AwsService>>,
9}
10
11impl ServiceRegistry {
12 pub fn new() -> Self {
13 Self::default()
14 }
15
16 pub fn register(&mut self, service: Arc<dyn AwsService>) {
17 self.services
18 .insert(service.service_name().to_string(), service);
19 }
20
21 pub fn get(&self, name: &str) -> Option<&Arc<dyn AwsService>> {
22 self.services.get(name)
23 }
24
25 pub fn service_names(&self) -> Vec<&str> {
26 self.services.keys().map(|s| s.as_str()).collect()
27 }
28}