rightkit_agent_engine_protocol/
effect_settlement.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
9#[serde(rename_all = "snake_case")]
10pub enum ExternalEffectSettlement {
11 NotStarted,
12 Running,
13 Succeeded,
14 Failed,
15 InterruptedUnknown,
16}
17
18impl ExternalEffectSettlement {
19 pub fn may_have_executed(self) -> bool {
20 matches!(
21 self,
22 Self::Running | Self::Succeeded | Self::Failed | Self::InterruptedUnknown
23 )
24 }
25
26 pub fn allows_automatic_non_idempotent_replay(self) -> bool {
30 matches!(self, Self::NotStarted)
31 }
32
33 pub fn requires_reconciliation(self) -> bool {
34 matches!(self, Self::InterruptedUnknown)
35 }
36}