Module apollo_framework::config [−][src]
Contains the system configuration.
Provides access to the system configuration which is loaded from the config/settings.yml file. Note that we observe this file for changes and reload it once a change is detected. Therefore each user of the config should attach itself to the Config::notifier and re-process the config once a change message is received.
Being an in-memory database framework we want to prevent restarts / downtimes as much as possible.
Note that the Config struct is kind of constant and can be obtained from the Platform once and then kept around. However, when using Config::current() to obtain the current config handle, this should not be stored, as it will not be updated once a new config has been loaded.
Examples
Obtaining and reading the config:
// Create a platform and install the config... let platform = Platform::new(); let config = config::install(platform.clone(), false).await; // Fetch the current config document (might be reloaded from time to time) and read the // selected server port.. let port = config.current().config()["server"]["port"].as_i64().unwrap_or(1234);
Attaching a change listener:
// Create a platform and install the config... let platform = Platform::new(); let config = config::install(platform.clone(), false); // Obtain the config... let config = platform.require::<Config>(); tokio::spawn(async move { loop { // Wait for a config change. This will most probably be combined with a read from // a command queue or another feature using tokio::select!... match config.notifier().recv().await { Ok(_) => log::info!("Config update received..."), _ => return, } } });
Structs
| Config | Provides access to the system configuration. |
| Handle | Represents a handle to the currently loaded configuration. |
Functions
| install | Creates an installs a Config for the given platform. |
Type Definitions
| ChangeNotifier | Represents the change listener. |