chiark / gitweb /
some piece held error etc.
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 27 Jun 2020 18:11:19 +0000 (19:11 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 27 Jun 2020 18:11:19 +0000 (19:11 +0100)
src/bin/server.rs
src/gamestate.rs

index cc18233b2eda324ae4248e0742763ecfd9e47310..b8b1fcbfc4c25763803efffbd21c23a505c2672c 100644 (file)
@@ -127,15 +127,14 @@ struct ApiGrab {
 #[throws(RE)]
 fn api_grab(form : Json<ApiGrab>) -> impl response::Responder<'static> {
   let iad = lookup_token(&form.t).ok_or_else(||anyhow!("unknown token"))?;
-  let g = iad.i.lock().map_err(|e| anyhow!("lock poison {:?}",&e))?;
-  let r : Result<(),OpError> = {
-    let p = g.gs.pieces.get_mut(form.p)/*.ok_or(OpError::PieceGone)?*/;
-/*
+  let mut g = iad.i.lock().map_err(|e| anyhow!("lock poison {:?}",&e))?;
+  let r : Result<(),OpError> = (||{
+    let p = decode_visible_pieceid(form.p);
+    let p = g.gs.pieces.get_mut(p).ok_or(OpError::PieceGone)?;
     if p.held != None { Err(OpError::PieceHeld)? };
     p.held = Some(iad.user);
-*/
     Ok(())
-  };
+  })();
   eprintln!("API {:?} => {:?}", &form, &r);
   ""
 }
index 042de128d3343a85cbf4158edc4e43fcd977c948..02199c4d1642fc89cd30db52ca529509c23c5748 100644 (file)
@@ -13,6 +13,12 @@ pub fn make_pieceid_visible(p : PieceId) -> VisiblePieceId {
   VisiblePieceId(kd)
 }
 
+pub fn decode_visible_pieceid(p : VisiblePieceId) -> PieceId {
+  // xxx need to do censorship mapping here
+  let kd : slotmap::KeyData = p.into();
+  PieceId(kd)
+}
+
 #[derive(Debug)]
 pub struct PieceRenderInstructions {
   pub id : VisiblePieceId,