From: Ian Jackson Date: Fri, 31 Jul 2020 22:01:26 +0000 (+0100) Subject: simplify PlayerUpdate interface X-Git-Tag: otter-0.2.0~1213 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=54c5cca1729bd739d21242e5a8082ffc04a05786;p=otter.git simplify PlayerUpdate interface --- diff --git a/src/sse.rs b/src/sse.rs index ed2d5aac..d10d40b8 100644 --- a/src/sse.rs +++ b/src/sse.rs @@ -47,12 +47,12 @@ impl Read for UpdateReader { let pu = &mut ig.updates.get(self.player) .ok_or_else(|| em("player gonee"))?; - let cv = loop { - let next = match pu.get_or_cv(self.to_send) { - Ok(next) => next, Err(cv) => { break cv } + loop { + let next = match pu.read_log().get(self.to_send) { + Some(next) => next, None => { break } }; let next_len = UPDATE_MAX_FRAMING_SIZE + next.json_len(); - if next_len > buf.len() { break pu.get_cv() } + if next_len > buf.len() { break } let tu = next.for_transmit(self.client); // xxx handle overflow by allocating @@ -62,7 +62,8 @@ impl Read for UpdateReader { id: {}\n\n", &self.to_send)?; self.to_send.try_increment().unwrap(); - }; + } + let cv = pu.get_cv(); loop { let generated = orig_wanted - buf.len(); diff --git a/src/updates.rs b/src/updates.rs index e93fa6c4..9246a714 100644 --- a/src/updates.rs +++ b/src/updates.rs @@ -99,11 +99,6 @@ impl PlayerUpdates { self.cv.notify_all(); } pub fn read_log(&self) -> &PlayerUpdatesLog { &self.log } - - pub fn get_or_cv(&self, index: sse::UpdateId) - -> Result<&Arc,Arc> { - self.log.get(index).ok_or_else(|| self.cv.clone()) - } pub fn get_cv(&self) -> Arc { self.cv.clone() } }