chiark / gitweb /
simplify PlayerUpdate interface
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 31 Jul 2020 22:01:26 +0000 (23:01 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 31 Jul 2020 22:01:26 +0000 (23:01 +0100)
src/sse.rs
src/updates.rs

index ed2d5aac249e9a0c3f8e146b527eadf2c26bf831..d10d40b8eb6a1ae9a617d909d841d612b4c99421 100644 (file)
@@ -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();
index e93fa6c4a6d1a3d98addb426f2fcd60a1180d310..9246a7140bdf8a7567b711de4642e7b52e011cb3 100644 (file)
@@ -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<PreparedUpdate>,Arc<Condvar>> {
-    self.log.get(index).ok_or_else(|| self.cv.clone())
-  }
   pub fn get_cv(&self) -> Arc<Condvar> { self.cv.clone() }
 }