chiark / gitweb /
hidden prep: Pass player to json_len() methods
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 30 Jan 2021 11:12:55 +0000 (11:12 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 31 Jan 2021 18:38:28 +0000 (18:38 +0000)
NFC right now.  We are going to want this later.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/sse.rs
src/updates.rs

index f05422c4ddc663aa1cc049b7a10a7a17978bcdcb..9d3cad75a751abb93ac2c910831cd712c8a2f220 100644 (file)
@@ -132,7 +132,7 @@ impl Read for UpdateReader {
           break
         }
       };
-      let next_len = UPDATE_MAX_FRAMING_SIZE + next.json_len();
+      let next_len = UPDATE_MAX_FRAMING_SIZE + next.json_len(self.player);
       if next_len > buf.len() {
         if buf.len() != orig_wanted { break }
 
index ffc49a86e31286274e36460248c8bc73dca6270e..5ff170012df1dcd4c6a953ae86235b400155ab9d 100644 (file)
@@ -211,13 +211,13 @@ impl PlayerUpdates {
 }
 
 impl PreparedUpdate {
-  pub fn json_len(&self) -> usize {
-    self.us.iter().map(|u| 20 + u.json_len()).sum()
+  pub fn json_len(&self, player: PlayerId) -> usize {
+    self.us.iter().map(|u| 20 + u.json_len(player)).sum()
   }
 }
 
 impl PreparedUpdateEntry_Piece {
-  pub fn json_len(&self) -> usize {
+  pub fn json_len(&self, _player: PlayerId) -> usize {
     let PUE_P { ref op, .. } = self;
     50 +
       op.new_state().map(|x| x.svg.0.as_bytes().len()).unwrap_or(0)
@@ -225,11 +225,11 @@ impl PreparedUpdateEntry_Piece {
 }
 
 impl PreparedUpdateEntry {
-  pub fn json_len(&self) -> usize {
+  pub fn json_len(&self, player: PlayerId) -> usize {
     use PreparedUpdateEntry::*;
     match self {
       Piece(op) => {
-        op.json_len()
+        op.json_len(player)
       }
       Log(logent) => {
         logent.logent.html.0.as_bytes().len() * 28
@@ -254,7 +254,7 @@ impl PreparedUpdateEntry {
         ).sum::<usize>() + 50
       }
       Error(ESVU::PieceOpError { state, .. }) => {
-        100 + state.json_len()
+        100 + state.json_len(player)
       }
       Error(ESVU::InternalError) |
       Error(ESVU::PlayerRemoved) |