}
#[throws(AE)]
-fn access_game(ma: &MainOpts, table_name: &String) -> ConnForGame {
- ConnForGame {
- conn: access_account(ma)?.chan,
- game: ma.instance_name(table_name),
- how: MgmtGameUpdateMode::Online,
- }
+fn access_game(ma: &MainOpts, table_name: &String) -> MgmtChannelForGame {
+ access_account(ma)?.chan.for_game(
+ ma.instance_name(table_name),
+ MgmtGameUpdateMode::Online,
+ )
}
//---------- list-games ----------
fn call(_sc: &Subcommand, ma: MainOpts, args: Vec<String>) ->Result<(),AE> {
let args = parse_args::<Args,_>(args, &subargs, &ok_id, None);
- let mut chan = ConnForGame {
- conn: access_account(&ma)?.chan,
- game: ma.instance_name(&args.table_name),
- how: MgmtGameUpdateMode::Bulk,
- };
+ let mut chan = access_account(&ma)?.chan.for_game(
+ ma.instance_name(&args.table_name),
+ MgmtGameUpdateMode::Bulk,
+ );
let GameSpec {
table_size,
pieces,
items.sort();
items
}
+
+ pub fn for_game(self, game: InstanceName, how: MgmtGameUpdateMode)
+ -> MgmtChannelForGame {
+ MgmtChannelForGame {
+ chan: self,
+ game, how
+ }
+ }
}
pub trait IoTryClone: Sized {
}
-pub struct ConnForGame {
- pub conn: MgmtChannel,
+pub struct MgmtChannelForGame {
+ pub chan: MgmtChannel,
pub game: InstanceName,
pub how: MgmtGameUpdateMode,
}
-deref_to_field_mut!{ConnForGame, MgmtChannel, conn}
+deref_to_field_mut!{MgmtChannelForGame, MgmtChannel, chan}
-impl ConnForGame {
+impl MgmtChannelForGame {
#[throws(AE)]
pub fn alter_game(&mut self, insns: Vec<MgmtGameInstruction>,
f: Option<&mut dyn FnMut(&MgmtGameResponse) -> Result<(),AE>>)