From: Ian Jackson Date: Sat, 15 Aug 2020 11:19:39 +0000 (+0100) Subject: wip server config X-Git-Tag: otter-0.2.0~1124 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=49b0a9d00411242e8e8e6b8a7f540fc782953c4b;p=otter.git wip server config --- diff --git a/src/global.rs b/src/global.rs index f29f3420..5d0ee8ab 100644 --- a/src/global.rs +++ b/src/global.rs @@ -5,9 +5,6 @@ use lazy_static::lazy_static; use std::sync::PoisonError; -#[allow(dead_code)] -const SAVE_DIRECTORY : &str = "save"; - // ---------- newtypes and type aliases ---------- visible_slotmap_key!{ ClientId('C') } @@ -163,6 +160,7 @@ struct Global { games : RwLock,InstanceRef>>, players : RwLock>, clients : RwLock>, + config : RwLock>, // xxx delete instances at some point! } @@ -533,7 +531,7 @@ fn savefilename(name: &InstanceName, prefix: &str, suffix: &str) -> String { Server => format!(""), Unix{user} => { format!("{}:", user) }, } }; - [ SAVE_DIRECTORY, &"/", prefix, scope_prefix.as_ref() ] + [ config().save_directory.as_str(), &"/", prefix, scope_prefix.as_ref() ] .iter().map(Deref::deref) .chain( utf8_percent_encode(&name.scoped_name, &percent_encoding::NON_ALPHANUMERIC) ) @@ -677,7 +675,7 @@ pub fn load_games() { use AFState::*; use SavefilenameParseResult::*; let mut a_leaves = HashMap::new(); - for de in fs::read_dir(SAVE_DIRECTORY)? { + for de in fs::read_dir(&config().save_directory)? { let de = de?; let leaf = de.file_name(); (||{ @@ -785,6 +783,26 @@ pub fn record_token ( token } +// ========== server config ========== + +const DEFAULT_SAVE_DIRECTORY : &str = "save"; + +pub struct ServerConfig { + pub save_directory: String, +} + +pub fn config() -> Arc { + GLOBAL.config.read().unwrap().clone() +} + +impl Default for ServerConfig { + fn default() -> ServerConfig { + ServerConfig { + save_directory: DEFAULT_SAVE_DIRECTORY.to_owned(), + } + } +} + // ========== ad-hoc and temporary ========== const XXX_PLAYERS_TOKENS : &[(&str, &str)] = &[