chiark / gitweb /
drop some now-superseded junk
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 7 Jul 2020 20:25:05 +0000 (21:25 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 7 Jul 2020 20:25:05 +0000 (21:25 +0100)
junk/error.rs [deleted file]
junk/gamestate.rs [deleted file]
junk/global.rs [deleted file]
junk/instance.rs
junk/main.rs [deleted file]
junk/pieces.rs [deleted file]
junk/testload.rs [deleted file]

diff --git a/junk/error.rs b/junk/error.rs
deleted file mode 100644 (file)
index 61b26b1..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-#[derive(Error)]
-enum Error {
-  [error("attempt to create instance with same name as existing instance")]
-  InstanceAlreadyExists,
-  [error("attempt to create instance with same name as existing instance")]
-  UnknownInstance,
-}
diff --git a/junk/gamestate.rs b/junk/gamestate.rs
deleted file mode 100644 (file)
index ef9b219..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-
-struct PlayerRecord {
-  nick : String,
-}
-
-pub struct GameRef (InstanceGuard);
-impl Deref for GameRef {
-  type Output = GamState;
-  fn deref(&self) -> &GameState { self.0.read() }
-}
-
-struct LogMessage (HtmlString);
-
-impl PieceRecord {
-  fn msg(&self) -> MsgPiece { self.p.svg(self) }
-}
-
-impl GameRef {
-  fn piece_insert(&mut self, i : usize,
-                  p : Rc<PieceRecord>, msg : LogMessage) {
-    self.0.action(|g| {
-      g.pieces.insert(i, p);
-      (msg, MsgPieceInsert(i, p))
-    );
-  fn piece_delete(&mut self, i : usize, msg : LogMessage) {
-    self.0.action(|g| {
-      let old = g.pieces.remove(i, p);
-      (msg, MsgPieceDelete(i, old))
-    }
-  }
-  fn piece_update(&mut self, i : usize, p : PieceRecord) {
-    self.0.action(|g| {
-      let new = p.clone();
-      let old = replace(g.pieces[i], p);
-      (msg, MsgPieceUpdate(i, old, new))
-    }
-  }
-}
diff --git a/junk/global.rs b/junk/global.rs
deleted file mode 100644 (file)
index 009215c..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#[throws(E)]
-fn create_instance_access(name : &str, i : Rc<Instance>) {
-  let w = GLOBAL.instances().write();
-  match w.entry(name) {
-    Occupied(oe) => throw!(anyhow!("access key alreay defined"));
-    Vacant(ve) => ve.insert(i);
-  }
-}
-
-/*
-impl<'r> FromParam<'r> for InstanceGuard<'r> {
-  type Error = AE;
-  #[throws(E)]
-  fn from_param(param: &'r RawStr) -> Self {
-    let g = GLOBAL.instances().read();
-    let iname = param.as_str();
-    let i = g.get(iname);
-    let i = i.ok_or(anyhow!("unnown instance"))?;
-    i.lock(iname)
-  }
-}
-*/
-
index 3ce166448e9bcaa8b42bbbd6c4efcca7c095255f..2b7310b6980a9b00b5a983d016846942fbb2ed11 100644 (file)
@@ -1,68 +1,2 @@
 
 const RECENT_BUFFER : usize = 10;
-#[derive(Debug)]
-pub struct Instance {
-  mod_token : RawToken,
-  g : RwLock<Game>,
-  g_notify : Condvar,
-}
-
-#[derive(Debug)]
-struct Game {
-  log : VecDeque<LogEntry>,
-}
-
-struct LogEntry {
-  game : Vec<GameUpdate>,
-  msgs : Vec<LogMessage>,
-}
-
-impl From<(LogMessage, GameUpdate)> for LogEntry {
-  fn from((msg, gu) : (LogMessage, GameUpdate)) -> LogEntry {
-    LogEntry { game : vec![lm], msgs: vec![msg] }
-  }
-}
-
-impl Instance {
-  fn new(gs : GameState) -> Instance {
-    Instance {
-      g_notify : Condvar::new(),
-      g : RwLock::new(Game {
-        gen : 0,
-        gs,
-        recent : VecDequeue::with_capacity(RECENT_BUFFER),
-      }),
-    }
-  }
-}
-
-pub struct InstanceGuard<'r> {
-  iname : &'r str;
-  g : RwLockWriteGuard<Game>,
-  g_notify : &'r Condvar,
-}
-
-impl Instance {
-  fn lock(&'r self, iname : &'r str) -> InstanceGuard<'r> {
-    let g = self.g.lock();
-    InstanceGuard { g, iname, g_notify : &self.g_notify }
-  }
-}
-
-impl InstanceGuard {
-  fn read(&self) -> &GameState { &self.g.deref().gs }
-  fn iname(&self) -> &str { self.iname }
-
-  fn<F,L> action(&mut self, f : F)
-  where F : FnOnce(&mut GameState) -> L
-        L : Into<LogEntry>
-  {
-    let msg = f(&mut self.gs.g),
-    if let MsgNoUpdate = msg { return }
-    self.gs.gen += 1,
-    if self.gw.recent.len() >= RECENT_BUFFER { self.pop_front() }
-    self.g.evenglog.push_back(msg);
-    self.g_notify.notify_all();
-  }
-}
diff --git a/junk/main.rs b/junk/main.rs
deleted file mode 100644 (file)
index 73d04c7..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-
-#![feature(proc_macro_hygiene, decl_macro)]
-
-#[macro_use] extern crate rocket;
-
-extern crate rocket_contrib; // why do we need this ?
-extern crate serde;
-extern crate thiserror;
-extern crate anyhow;
-
-mod imports;
-use imports::*;
-
-type RE = E;
-
-pub type InstanceName = String;
-
-#[derive(Serialize,Debug)]
-struct TestRenderContext { }
-
-#[get("/")]
-fn index() -> Result<Template,RE> {
-  let c = TestRenderContext { };
-  Ok(Template::render("test",&c))
-}
-
-const RESOURCES : &[&'static str] = &["script.js", "style.css"];
-
-#[derive(Debug)]
-struct CheckedResourceLeaf { pub safe : &'static str }
-#[derive(Error,Debug)]
-#[error("not a valid resource path")]
-struct UnknownResource{}
-
-impl<'r> FromParam<'r> for CheckedResourceLeaf {
-  type Error = UnknownResource;
-  fn from_param(param: &'r RawStr) -> Result<Self, Self::Error> {
-    for &safe in RESOURCES {
-      if safe == param.as_str() { return Ok(CheckedResourceLeaf{ safe }) }
-    }
-    Err(UnknownResource{})
-  }
-}
-
-type TestCounter = BufReader<TestCounterInner>;
-#[derive(Debug)]
-struct TestCounterInner { next : usize, }
-impl Read for TestCounterInner {
-  fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
-    thread::sleep(Duration::from_millis(500));
-    let data = format!("data: {}\n\n", self.next);
-    self.next += 1;
-    buf[0..data.len()].copy_from_slice(data.as_bytes());
-    Ok(buf.len())
-  }
-}
-
-struct MainRenderContext { };
-
-struct GraspForm {
-  a : InstanceAccess,
-  pn : usize,
-  grasped : bool,
-};
-#[post("/_/api/grasp")]
-fn mainpage(f : GraspForm) -> impl xxx json somehow response::Responder<'static> {
-  let mut g = f.a.i.lock();
-  let p = g.pieces.
-}
-
-#[post("/<access>")]
-fn mainpage(access : InstanceAccess) -> impl response::Responder<'static> {
-  let c = MainRenderContext { };
-  Template::render("main",&c)
-}
-
-/*
-
-  let tc = TestCounterInner { next : 0 };
-  let tc = BufReader::new(tc);
-  let ch = response::Stream::chunked(tc, 1);
-  let ct = ContentType::parse_flexible("text/event-stream; charset=utf-8").
-    unwrap();
-  response::content::Content(ct,ch)
-}  
-*/
-
-#[get("/_/<leaf>")]
-fn resource(leaf : CheckedResourceLeaf) -> io::Result<NamedFile> {
-  let template_dir = "templates"; // xxx
-  NamedFile::open(format!("{}/{}", template_dir, leaf.safe))
-}  
-
-fn main() {
-  testload()?;
-
-  let helmet = SpaceHelmet::default()
-    .enable(NoSniff::Enable)
-    .enable(Frame::Deny)
-    .enable(Referrer::NoReferrer);
-
-  rocket::ignite()
-    .attach(helmet)
-    .attach(Template::fairing())
-    .mount("/", routes![
-      index,
-      resource,
-      updates,
-    ])
-    .launch();
-}
diff --git a/junk/pieces.rs b/junk/pieces.rs
deleted file mode 100644 (file)
index 8d8da0a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-struct Disc {
-  colours : Vec<Colour>,
-  size : Coord,
-}
-
-impl Piece for Disc {
-  fn svg(&self, pr : &PiecedRecord) -> SvgData {
-    format!(
-      r#"<circle cs="{}" cy="{}" r="{}" style="fill: {};"/>"#,
-      pr.pos[0], pr.pos[1], swlf.size, self.colour,
-    ).into_bytes()
-  }
-}
-
-fn xxx_testload_disc() -> Disc { Disc { colours : 
-  
-}
diff --git a/junk/testload.rs b/junk/testload.rs
deleted file mode 100644 (file)
index b37a61e..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-
-fn testload() -> E {
-  let disc = Disc { size : 10, colours : vec![
-    Colour::literal("red"),
-    Colour::literal("pink"),
-  ] };
-  let pr = PieceRecord {
-    pos : [40,40],
-    p : Rc::new(disc),
-    held : None,
-  };
-  let g = GameState {
-    pieces : vec![ pr ],
-    players : vec![
-      PlayerRecord { nick : "alice".to_owned() },
-      PlayerRecord { nick : "bob"  .to_owned() },
-    ],
-  };
-  create_instance_access("alice", 
-