From: Ian Jackson Date: Sun, 2 Aug 2020 23:12:32 +0000 (+0100) Subject: tolerate missing a-* file as intended X-Git-Tag: otter-0.2.0~1192 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=602de3ced48605847d4f22c7cbe425e6f94772b3;p=otter.git tolerate missing a-* file as intended --- diff --git a/src/global.rs b/src/global.rs index b2d04f2b..c964170b 100644 --- a/src/global.rs +++ b/src/global.rs @@ -171,7 +171,7 @@ pub struct InstanceContainer { g : Instance, } -#[derive(Debug,Serialize,Deserialize)] +#[derive(Debug,Default,Serialize,Deserialize)] struct InstanceSaveAccesses { tokens_players : Vec<(RawTokenStr, PlayerId)>, } @@ -624,7 +624,13 @@ impl InstanceGuard<'_> { // xxx check for deleted players, throw their tokens away let gs : GameState = Self::load_something(&name, "g-")?; let mut al : InstanceSaveAccesses - = Self::load_something(&name, "a-")?; + = Self::load_something(&name, "a-") + .or_else(|e:ServerFailure| match e { + ServerFailure::IO(ioe) if ioe.kind() == io::ErrorKind::NotFound => { + Ok(Default::default()) + }, + e => Err(e), + })?; let mut updates : SecondarySlotMap<_,_> = Default::default(); for player in gs.players.keys() { updates.insert(player, Default::default());