From: Ian Jackson Date: Tue, 7 Jul 2020 20:25:05 +0000 (+0100) Subject: drop some now-superseded junk X-Git-Tag: otter-0.2.0~1414 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=12c5b85ccb9756fe87fcdfbfdc12ef54215d07d5;p=otter.git drop some now-superseded junk --- diff --git a/junk/error.rs b/junk/error.rs deleted file mode 100644 index 61b26b1c..00000000 --- a/junk/error.rs +++ /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 index ef9b2193..00000000 --- a/junk/gamestate.rs +++ /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, 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 index 009215cf..00000000 --- a/junk/global.rs +++ /dev/null @@ -1,24 +0,0 @@ - -#[throws(E)] -fn create_instance_access(name : &str, i : Rc) { - 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) - } -} -*/ - diff --git a/junk/instance.rs b/junk/instance.rs index 3ce16644..2b7310b6 100644 --- a/junk/instance.rs +++ b/junk/instance.rs @@ -1,68 +1,2 @@ const RECENT_BUFFER : usize = 10; - -#[derive(Debug)] -pub struct Instance { - mod_token : RawToken, - g : RwLock, - g_notify : Condvar, -} - -#[derive(Debug)] -struct Game { - log : VecDeque, -} - -struct LogEntry { - game : Vec, - msgs : Vec, -} - -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, - 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 action(&mut self, f : F) - where F : FnOnce(&mut GameState) -> L - L : Into - { - 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 index 73d04c7f..00000000 --- a/junk/main.rs +++ /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 { - 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 { - for &safe in RESOURCES { - if safe == param.as_str() { return Ok(CheckedResourceLeaf{ safe }) } - } - Err(UnknownResource{}) - } -} - -type TestCounter = BufReader; -#[derive(Debug)] -struct TestCounterInner { next : usize, } -impl Read for TestCounterInner { - fn read(&mut self, buf: &mut [u8]) -> io::Result { - 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("/")] -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("/_/")] -fn resource(leaf : CheckedResourceLeaf) -> io::Result { - 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 index 8d8da0a8..00000000 --- a/junk/pieces.rs +++ /dev/null @@ -1,18 +0,0 @@ - -struct Disc { - colours : Vec, - size : Coord, -} - -impl Piece for Disc { - fn svg(&self, pr : &PiecedRecord) -> SvgData { - format!( - r#""#, - 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 index b37a61e2..00000000 --- a/junk/testload.rs +++ /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", -