pub enum MgmtGameInstruction {
Noop { },
AddPiece(PiecesSpec),
+ // todo: RemovePiece
AddPlayer(PlayerState),
RemovePlayer(PlayerId),
}
GameBeingDestroyed,
GameNotFound,
GameCorrupted,
+ PlayerNotFound,
LimitExceeded,
SVGProcessingFailed(#[from] SVGProcessingError),
GameError(#[from] GameError),
self.token_register(token, iad);
}
- #[throws(OE)]
+ #[throws(MgmtError)]
pub fn player_access_reset(&mut self, players: &[PlayerId])
-> Vec<RawToken> {
// tokens can't persist unless game is never destroyed ?
// so a game is like a tables, and persistent
// xxx boxes feature maybe
+ for &player in players {
+ self.c.g.gs.players.get(player).ok_or(MgmtError::PlayerNotFound)?;
+ }
self.tokens_deregister_for_id(|id:PlayerId| players.contains(&id));
self.save_access_now()?;
let mut tokens = vec![];
gref : self.gref.clone(),
ident : player
};
- let token = RawToken::new_random()?;
+ let token = RawToken::new_random();
self.token_register(token.clone(), iad);
tokens.push(token);
}
}
impl RawToken {
- #[throws(OE)]
fn new_random() -> Self {
let mut rng = thread_rng();
let token = RawToken (
ig : &mut InstanceGuard,
iad : InstanceAccessDetails<Id>
) -> RawToken {
- let token = RawToken::new_random()?;
+ let token = RawToken::new_random();
ig.token_register(token.clone(), iad);
token
}