diff options
Diffstat (limited to 'src/config/mod.rs')
-rw-r--r-- | src/config/mod.rs | 36 |
1 files changed, 36 insertions, 0 deletions
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 +} + |