diff options
Diffstat (limited to 'src/config')
-rw-r--r-- | src/config/environment.rs | 4 | ||||
-rw-r--r-- | src/config/file.rs | 2 | ||||
-rw-r--r-- | src/config/mod.rs | 36 |
3 files changed, 39 insertions, 3 deletions
diff --git a/src/config/environment.rs b/src/config/environment.rs index c4d2c06..7ebe588 100644 --- a/src/config/environment.rs +++ b/src/config/environment.rs @@ -49,7 +49,7 @@ const ROUGHENOUGH_BATCH_SIZE: &str = "ROUGHENOUGH_BATCH_SIZE"; const ROUGHENOUGH_STATUS_INTERVAL: &str = "ROUGHENOUGH_STATUS_INTERVAL"; impl EnvironmentConfig { - pub fn new() -> Self { + pub fn new() -> Result<Self, Error> { let mut cfg = EnvironmentConfig { port: 0, interface: "".to_string(), @@ -91,7 +91,7 @@ impl EnvironmentConfig { cfg.status_interval = Duration::from_secs(val as u64); }; - cfg + Ok(cfg) } } diff --git a/src/config/file.rs b/src/config/file.rs index 24011bb..8aa8ca2 100644 --- a/src/config/file.rs +++ b/src/config/file.rs @@ -45,7 +45,7 @@ pub struct FileConfig { } impl FileConfig { - pub fn from_file(config_file: &str) -> Result<Self, Error> { + pub fn new(config_file: &str) -> Result<Self, Error> { let mut infile = File::open(config_file).expect("failed to open config file"); let mut contents = String::new(); diff --git a/src/config/mod.rs b/src/config/mod.rs index 0cd8742..02ab941 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -22,6 +22,7 @@ //! extern crate hex; +extern crate log; use std::net::SocketAddr; use std::time::Duration; @@ -88,3 +89,38 @@ pub trait ServerConfig { /// Convenience function to create a `SocketAddr` from the provided `interface` and `port` fn socket_addr(&self) -> Result<SocketAddr, Error>; } + +pub fn is_valid_config(cfg: &Box<ServerConfig>) -> bool { + let mut is_valid = true; + + if cfg.port() == 0 { + error!("unset port: {}", cfg.port()); + is_valid = false; + } + if cfg.interface().is_empty() { + error!("interface is missing"); + is_valid = false; + } + match cfg.socket_addr() { + Err(e) => { + error!("{}:{}: {:?}", cfg.interface(), cfg.port(), e); + is_valid = false; + } + _ => () + } + if cfg.seed().is_empty() { + error!("seed value is missing"); + is_valid = false; + } + if !cfg.seed().is_empty() && cfg.seed().len() != 32 { + error!("seed value must be 32 characters long"); + is_valid = false; + } + if cfg.batch_size() < 1 || cfg.batch_size() > 64 { + error!("batch_size {} is invalid; valid range 1-64", cfg.batch_size()); + is_valid = false; + } + + is_valid +} + |