krabka_verified/
recovery.rs1use creusot_std::prelude::*;
4
5#[krabka_macros::model_type]
7pub enum ReplayRecordDecision {
8 Apply(i64),
10 Skip,
12}
13
14#[krabka_macros::model_type]
16pub enum ReplayCursorDecision {
17 Advance(i64),
19 Stop,
21}
22
23#[krabka_macros::model_type]
25pub enum BarrierRecoveryRecordKind {
26 Group,
27 InjectionStart,
28 Cut,
29}
30
31#[krabka_macros::model_type]
33pub enum BarrierRecoveryFoldAction {
34 DefineGroup,
35 RemoveGroup,
36 SetPending,
37 KeepPending,
38 ClearPending,
39 UpsertCut { retire_pending: bool },
40 RemoveCut,
41}
42
43#[krabka_macros::model_type]
45pub enum BarrierRecoveryFinalizeDecision {
46 NoPending,
47 MalformedPending,
48 UnknownCoordinator,
49 FencedCoordinator,
50 FinalizePartial,
51}
52
53mod replay_cursor_decision;
54#[cfg(creusot)]
55pub use replay_cursor_decision::replay_record_admitted;
56pub use replay_cursor_decision::{
57 barrier_recovery_finalize_decision, barrier_recovery_fold_action, replay_cursor_decision,
58 replay_record_decision,
59};
60
61mod should_capture_first_downgrade;
62pub use should_capture_first_downgrade::{
63 replay_batch_cursor_decision, should_capture_first_downgrade,
64};
65
66#[cfg(test)]
67mod tests;