chiark / gitweb /
wip links - does not compile
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 3 Jan 2021 10:54:09 +0000 (10:54 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 3 Jan 2021 10:54:09 +0000 (10:54 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/cmdlistener.rs
daemon/session.rs
src/bin/otter.rs

index 5a397c20f004f4a0096d8aa06aa94674bc294353..3a3bc05b6b54571cbc9030fbdb35e60b7a4313e4 100644 (file)
@@ -433,7 +433,11 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>(
         }
       ).collect::<Result<SecondarySlotMap<_,_>,ME>>()?;
       let table_size = ig.gs.table_size;
-      let info = MgmtGameResponseGameInfo { table_size, players };
+      let links = ig.links.iter().filter_map(
+        |(k,v)|
+        Some((k.clone(), v.as_ref()?.clone().0))
+      ).collect();
+      let info = MgmtGameResponseGameInfo { table_size, players, links };
       Ok(Resp::Info(info))
     })?,
 
index fabce96aed3f62ff6bdbd42e6ffcfce2405e7249..3f7406515e64b600bdd9219f7ea3f22726af81ed 100644 (file)
@@ -187,7 +187,8 @@ fn session_inner(form : Json<SessionForm>,
       nick : gpl.nick.clone(),
       sse_url_prefix,
       ptoken: form.ptoken.clone(),
-      links: ig.links.iter().map(|(k,v)| (k.clone(), v.clone())).collect(),
+      links: ig.links.iter()
+        .filter_map(|(k,v)| Some((k.clone(), v.clone()?))).collect(),
       load : serde_json::to_string(&DataLoad {
         players: load_players,
         last_log_ts: timestamp_abbrev.unwrap_or_default(),
index 79a6dcccae90acf264381ba7617c8662dab696cf..cc96328852fc416c7aa3153179841390ddbb3b6e 100644 (file)
@@ -651,6 +651,7 @@ fn setup_table(_ma: &MainOpts, spec: &TableSpec) -> Vec<MGI> {
   let mut insns = vec![];
   insns.push(MGI::ClearLog);
   insns.push(MGI::SetACL { acl });
+  insns.push(MGI::SetLinks(links.clone()));
   insns
 }
 
@@ -880,13 +881,14 @@ mod set_link {
       },
 
       Some(url) => {
+        let kind = args.kind.unwrap();
         chan.alter_game(vec![
           if url == "" {
-            MGI::SetLink { kind: args.kind, url }
+            MGI::SetLink { kind, url }
           } else {
-            MGI::RemoveLink { kind: args.kind }
+            MGI::RemoveLink { kind }
           }
-        ])?;
+        ], None)?;
       },
     }
   }