#[derive(Debug)]
struct Player {
+ pub nick: &'static str,
url: String,
}
struct Session {
+ pub nick: &'static str,
pub su_rc: Setup,
pub ctoken: RawToken,
pub gen: Generation,
} else {
let update = &entry["data"];
let update = serde_json::from_str(update).unwrap();
- dbgc!(&update);
if out.send(update).is_err() { break }
}
}
});
Session {
+ nick: player.nick,
client, gen,
cseq: 42,
ctoken: RawToken(ctoken.to_string()),
Loop::ok(PieceInfo { id, pos, info })
})
.collect();
- dbgc!(pieces)
+ let nick = self.nick;
+ dbgc!(nick, &pieces);
+ pieces
}
#[throws(AE)]
E: FnMut(&mut Session, Generation, &JsV)
-> Result<Option<R>, AE>
> (&mut self, mut g: G, mut f: F, mut ef: Option<E>) -> R {
+ let nick = self.nick;
'overall: loop {
let update = self.updates.recv()?;
let update = update.as_array().unwrap();
.try_into().unwrap()
);
self.gen = new_gen;
+ dbgc!(nick, new_gen);
if let Some(y) = g(self, new_gen) { break 'overall y }
for ue in update[1].as_array().unwrap() {
let (k,v) = ue.as_object().unwrap().iter().next().unwrap();
+ dbgc!(nick, k, &v);
if let Some(y) = {
if k != "Error" {
f(self, new_gen, k, v)
alice.synch()?;
bob.synchx(None, |session, gen, k, v| {
- dbgc!(k,v);
if k != "Piece" { return }
let v = v.as_object().unwrap();
let piece = v["piece"].as_str().unwrap();
panic!("unknown op {:?} {:?}", &op, &d);
},
};
- dbgc!(k,v,p);
+ let nick = session.nick;
+ dbgc!(nick, k,v,p);
})?;
// to repro a bug, have Bob move the RHS pawn out again
let spec = su.ds.game_spec_data()?;
let [alice, bob]: [Player; 2] = su.ds.setup_static_users(
default(),
- |sus| Ok(Player { url: sus.url })
+ |sus| Ok(Player { nick: sus.nick, url: sus.url })
)?
.try_into().unwrap();