chiark / gitweb /
pieces.byid
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 4 Jul 2020 02:11:20 +0000 (03:11 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 4 Jul 2020 02:11:28 +0000 (03:11 +0100)
src/bin/server.rs
src/error.rs

index 4f1b8ed60efe4193939fe20c85564ebd2e8b0d69..744623f6532809ca9af9ea764b5b42b1f6f53616 100644 (file)
@@ -117,14 +117,6 @@ fn session(form : Json<SessionForm>) -> Result<Template,OE> {
   Ok(Template::render("test",&c))
 }
 
-#[derive(Error,Debug)]
-#[error("operation error {:?}",self)]
-enum OpError {
-  Conflict,
-  PieceGone,
-  PieceHeld,
-}
-
 #[derive(Debug,Serialize,Deserialize)]
 struct ApiGrab {
   t : String,
@@ -145,7 +137,7 @@ fn api_grab(form : Json<ApiGrab>) -> impl response::Responder<'static> {
   let r : Result<(),OpError> = (||{
     let piece = decode_visible_pieceid(form.p);
     let gs = &mut g.gs;
-    let p = gs.pieces.get_mut(piece).ok_or(OpError::PieceGone)?;
+    let p = gs.pieces.byid_mut(piece)?;
     let q_gen = form.g;
     let u_gen =
       if client == p.lastclient { p.gen_lastclient }
index 54a0aa9a62ceb1a98ebe5fa15d4ae0101319b44f..b8c77e4b1a0348afe062876ad8b617e2fce37933 100644 (file)
@@ -3,6 +3,14 @@ use crate::imports::*;
 
 use std::sync::PoisonError;
 
+#[derive(Error,Debug)]
+#[error("operation error {:?}",self)]
+pub enum OpError {
+  Conflict,
+  PieceGone,
+  PieceHeld,
+}
+
 #[derive(Error,Debug)]
 pub enum OnlineError {
   #[error("Game corrupted by previous crash - consult administrator")]
@@ -64,3 +72,8 @@ impl<T> IdForById for T where T : AccessId {
   type Error = OE;
   const ERROR : OE = <Self as AccessId>::ERROR;
 }
+
+impl IdForById for PieceId {
+  type Error = OpError;
+  const ERROR : OpError = OpError::PieceGone;
+}