Skip to main content

fakecloud_core/
registry.rs

1use crate::service::AwsService;
2use std::collections::HashMap;
3use std::sync::Arc;
4
5/// Registry of AWS services available in this FakeCloud instance.
6#[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}