From 0e4d2cdf20a3c864e0879fad0f061d44ead2ef3a Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 13 Jul 2021 16:08:15 +0100 Subject: [PATCH] errors: Include error_msg in ESVU::PieceOpError Signed-off-by: Ian Jackson --- src/error.rs | 3 ++- src/global.rs | 2 +- src/prelude.rs | 2 +- src/updates.rs | 14 ++++++++------ 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/error.rs b/src/error.rs index dc0de331..277e5359 100644 --- a/src/error.rs +++ b/src/error.rs @@ -142,12 +142,13 @@ impl From for ApiPieceOpError { } #[derive(Debug,Serialize,Clone)] -pub enum ErrorSignaledViaUpdate { +pub enum ErrorSignaledViaUpdate { InternalError, PlayerRemoved, // appears only in streams for applicable player TokenRevoked, // appears only in streams for applicable player PieceOpError { error: Inapplicable, + error_msg: EM, partially: PieceOpErrorPartiallyProcessed, state: POEPU, }, diff --git a/src/global.rs b/src/global.rs index 31d99f42..4c1d9bd7 100644 --- a/src/global.rs +++ b/src/global.rs @@ -660,7 +660,7 @@ impl<'ig> InstanceGuard<'ig> { pub fn remove_clients(&mut self, players: &HashSet, - signal: ErrorSignaledViaUpdate) { + signal: ErrorSignaledViaUpdate) { let mut clients_to_remove = HashSet::new(); self.clients.retain(|k,v| { let remove = players.contains(&v.player); diff --git a/src/prelude.rs b/src/prelude.rs index bd6ef8cb..1425ebc8 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -194,7 +194,7 @@ pub type PUM = ProgressUpdateMode; // error.rs pub type APOE = ApiPieceOpError; -pub type ESVU = ErrorSignaledViaUpdate; +pub type ESVU = ErrorSignaledViaUpdate; pub type IE = InternalError; pub type Ia = Inapplicable; pub type POEPP = PieceOpErrorPartiallyProcessed; diff --git a/src/updates.rs b/src/updates.rs index b01ed922..3c1cf29b 100644 --- a/src/updates.rs +++ b/src/updates.rs @@ -74,7 +74,7 @@ pub enum PreparedUpdateEntry { new_info_pane: Arc, }, Log(Arc), - Error(ErrorSignaledViaUpdate), + Error(ErrorSignaledViaUpdate), } #[allow(non_camel_case_types)] @@ -255,7 +255,7 @@ enum TransmitUpdateEntry<'u> { SetLinks(Html), #[serde(serialize_with="serialize_logentry")] Log(TransmitUpdateLogEntry<'u>), - Error(ErrorSignaledViaUpdate>), + Error(ErrorSignaledViaUpdate, &'u str>), } type TransmitUpdateLogEntry<'u> = (&'u Timezone, &'u CommittedLogEntry); @@ -628,7 +628,8 @@ impl<'r> PrepareUpdatesBuffer<'r> { } )?; let update = PUE::Error(ESVU::PieceOpError { - error, state, partially + error, state, partially, + error_msg: error.to_string(), }); buf.us.push(update); buf.log_updates(logents); @@ -870,7 +871,7 @@ impl PreparedUpdate { pub fn for_transmit<'u>(&'u self, tz: &'u Timezone, player: PlayerId, dest: ClientId) -> TransmitUpdate<'u> { - type ESVU = ErrorSignaledViaUpdate; + type ESVU = ErrorSignaledViaUpdate; type PUE = PreparedUpdateEntry; type TUE<'u> = TransmitUpdateEntry<'u>; let mut ents = vec![]; @@ -970,7 +971,8 @@ impl PreparedUpdate { ESVU::InternalError => TUE::Error(ESVU::InternalError), ESVU::PlayerRemoved => TUE::Error(ESVU::PlayerRemoved), ESVU::TokenRevoked => TUE::Error(ESVU::TokenRevoked), - ESVU::PieceOpError { error, partially, ref state } => { + ESVU::PieceOpError { error, partially, + ref error_msg, ref state } => { let c = state.by_client.as_ref().map(|(_,c,_)| *c); if c == None || c == Some(dest) { let state = match pue_piece_to_tue_p(state, player) { @@ -978,7 +980,7 @@ impl PreparedUpdate { None => continue, }; TUE::Error( - ESVU::PieceOpError { error, partially, state } + ESVU::PieceOpError { error, error_msg, partially, state } ) } else { match partially { -- 2.30.2