// -------------------- utilities --------------------
-#[throws(AE)]
-pub fn mgmt_game_synch(chan: &mut MgmtChannel, game: InstanceName)
- -> Generation {
- let cmd = MgmtCommand::AlterGame {
- how: MgmtGameUpdateMode::Online,
- insns: vec![ MgmtGameInstruction::Synch ],
- game
- };
- let gen = if_chain!{
- let resp = chan.cmd(&cmd)?;
- if let MgmtResponse::AlterGame {
- error: None,
- ref responses
- } = resp;
- if let [MgmtGameResponse::Synch(gen)] = responses[..];
- then { gen }
- else { throw!(anyhow!("unexpected resp to synch {:?}", resp)) }
- };
- trace!("gen={} ...", gen);
- gen
+#[ext(pub)]
+impl MgmtChannel {
+ #[throws(AE)]
+ fn game_synch(&mut self, game: InstanceName) -> Generation {
+ let cmd = MgmtCommand::AlterGame {
+ how: MgmtGameUpdateMode::Online,
+ insns: vec![ MgmtGameInstruction::Synch ],
+ game
+ };
+ let gen = if_chain!{
+ let resp = self.cmd(&cmd)?;
+ if let MgmtResponse::AlterGame {
+ error: None,
+ ref responses
+ } = resp;
+ if let [MgmtGameResponse::Synch(gen)] = responses[..];
+ then { gen }
+ else { throw!(anyhow!("unexpected resp to synch {:?}", resp)) }
+ };
+ trace!("gen={} ...", gen);
+ gen
+ }
}
// ==================== core entrypoint, for wdriver too ====================
{
let exp = {
let mut su = self.su_rc.borrow_mut();
- mgmt_game_synch(&mut su.mgmt_conn, TABLE.parse().unwrap())?
+ su.mgmt_conn.game_synch(TABLE.parse().unwrap())?
};
let efwrap = ef.map(|ef| {
move |s: &mut _, g, v: &_| { ef(s,g,v)?; Ok::<_,AE>(None) }
#[throws(AE)]
fn synch_raw(&mut self) {
- let gen = mgmt_game_synch(&mut self.su.mgmt_conn,
- self.w.instance.clone())?;
+ let gen = self.su.mgmt_conn.game_synch(self.w.instance.clone())?;
(|| {
loop {
let tgen = self.su.driver.execute_async_script(