chiark / gitweb /
errors: Provide cseq in transmitted piece update errors
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 13 Jul 2021 17:38:59 +0000 (18:38 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 13 Jul 2021 17:38:59 +0000 (18:38 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/updates.rs
templates/script.ts

index 3ff0ad29a8d4252ddfd23689f63b1661d7253e40..616ad8ef6863f0da67c06175ed1433bd2f4b9bbe 100644 (file)
@@ -263,6 +263,7 @@ type TransmitUpdateLogEntry<'u> = (&'u Timezone, &'u CommittedLogEntry);
 #[allow(non_camel_case_types)]
 #[derive(Debug,Serialize)]
 struct ErrorTransmitUpdateEntry_Piece<'u> {
+  cseq: Option<ClientSequence>,
   #[serde(flatten)]
   tue: TransmitUpdateEntry_Piece<'u>,
 }
@@ -982,7 +983,8 @@ impl PreparedUpdate {
             ESVU::TokenRevoked  => TUE::Error(ESVU::TokenRevoked),
             ESVU::PieceOpError { error, partially,
                                  ref error_msg, ref state } => {
-              let c = state.by_client.as_ref().map(|(_,c,_)| *c);
+              let c    = state.by_client.as_ref().map(|(_,c,_   )| *c);
+              let cseq = state.by_client.as_ref().map(|(_,_,cseq)| *cseq);
               if c == None || c == Some(dest) {
                 let tue = match pue_piece_to_tue_p(state, player) {
                   Some(tue) => tue,
@@ -993,6 +995,7 @@ impl PreparedUpdate {
                     error, error_msg, partially,
                     state: { ETUE_P {
                       tue,
+                      cseq,
                     } },
                   }
                 )
index a26f50f693ebf319cb6893d86dd2d0e57880f5c8..4b9c054f1b7cac1a555c12ab6cf07057861c2b92 100644 (file)
@@ -1677,6 +1677,9 @@ type TransmitUpdateEntry_Piece = {
   piece: PieceId,
   op: Object,
 };
+type ErrorTransmitUpdateEntry_Piece = TransmitUpdateEntry_Piece & {
+  cseq: ClientSeq | null,
+};
 
 function handle_piece_update(j: TransmitUpdateEntry_Piece) {
   console.log('PIECE UPDATE ',j)
@@ -1996,12 +1999,14 @@ messages.Error = <MessageHandler>function
 
 type PieceOpError = {
   error: string,
-  state: TransmitUpdateEntry_Piece,
+  error_msg: string,
+  state: ErrorTransmitUpdateEntry_Piece,
 };
 
 update_error_handlers.PieceOpError = <MessageHandler>function
 (m: PieceOpError) {
   let piece = m.state.piece;
+  let cseq = m.state.cseq;
   let p = pieces[piece];
   console.log('ERROR UPDATE PIECE ', m, p);
   if (p == null) return;