From: Ian Jackson Date: Mon, 29 Jun 2020 00:42:29 +0000 (+0100) Subject: actual updates wip X-Git-Tag: otter-0.2.0~1495 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=80ba9ac1fc755658861c3b691f3d74e3dc3e1ce1;p=otter.git actual updates wip --- diff --git a/src/bin/server.rs b/src/bin/server.rs index 0ed61436..1bd0a4f8 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -208,12 +208,23 @@ enum XUpdate { TestCounter { value: usize }, } -type TestCounter = BufReader; +const UPDATE_READER_SIZE : usize = 1024*32; +const UPDATE_MAX_MSG_SIZE : usize = 1024; + #[derive(Debug)] -struct TestCounterInner { next : usize, } -impl Read for TestCounterInner { - - +struct UpdateReader { + playerid : PlayerId, + client : ClientId, + startat : Counter, + amu : Arc>>, +} +impl Read for UpdateReader { + fn read(&mut self, buf: &mut [u8]) -> io::Result { + let mug = amu.lock()?; + loop { + implement this! + } + e /* for (tclient, tcl) in &mut g.clients { if tclient == client { @@ -228,7 +239,6 @@ impl Read for TestCounterInner { */ - fn read(&mut self, buf: &mut [u8]) -> io::Result { thread::sleep(Duration::from_millis(500)); let message = XUpdate::TestCounter { value : self.next }; let data = serde_json::to_string(&message)?; diff --git a/src/global.rs b/src/global.rs index f32831c6..6578a019 100644 --- a/src/global.rs +++ b/src/global.rs @@ -23,8 +23,16 @@ impl Client { } } +pub struct PreparedUpdate { + gen : Counter, + client : ClientId, + piece : PieceId; + client_seq : ClientSequence, + json : Arc, +} + pub struct PlayerUpdates { - pub log : VecDeque<(ClientId, Arc)>, + pub log : VecDeque, pub cv : Condvar, } @@ -111,8 +119,8 @@ pub fn xxx_global_setup() { clients : Default::default(), updates : Default::default(), }; - let g = Arc::new(Mutex::new(gi)); - let mut ig = g.lock().unwrap(); + let amu = Arc::new(Mutex::new(gi)); + let mut ig = amu.lock().unwrap(); for (token, nick) in XXX_PLAYERS_TOKENS { let np = Player { nick : nick.to_string(),