lellm_graph/checkpoint/
checkpoint_policy.rs1use std::time::Duration;
19
20use super::checkpoint::{Checkpoint, CheckpointStoreError, TraceId};
21
22pub type CheckpointSaveFn<S> = Box<
24 dyn Fn(
25 Checkpoint<S>,
26 TraceId,
27 ) -> std::pin::Pin<
28 Box<dyn std::future::Future<Output = Result<(), CheckpointStoreError>> + Send>,
29 > + Send
30 + Sync,
31>;
32
33#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
37pub enum TriggerPolicy {
38 #[default]
40 EveryNode,
41 BarrierOnly,
43 Manual,
45 OnMutation,
47}
48
49#[derive(Debug, Clone, Default, PartialEq, Eq)]
53pub enum RetentionPolicy {
54 #[default]
56 KeepAll,
57 KeepLatest(usize),
59 TimeBased(Duration),
61}
62
63impl RetentionPolicy {
64 pub fn prune_keep(&self) -> Option<usize> {
70 match self {
71 RetentionPolicy::KeepAll => None,
72 RetentionPolicy::KeepLatest(n) => Some(*n),
73 RetentionPolicy::TimeBased(_) => None, }
75 }
76}
77
78#[allow(deprecated)]
82#[deprecated(
83 since = "0.5.0",
84 note = "Use TriggerPolicy instead. EveryNode → TriggerPolicy::EveryNode, \
85 BarrierOnly → TriggerPolicy::BarrierOnly, Manual → TriggerPolicy::Manual"
86)]
87#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
88pub enum CheckpointPolicy {
89 #[default]
90 EveryNode,
91 BarrierOnly,
92 Manual,
93}
94
95#[allow(deprecated)]
96impl From<CheckpointPolicy> for TriggerPolicy {
97 fn from(policy: CheckpointPolicy) -> Self {
98 match policy {
99 CheckpointPolicy::EveryNode => TriggerPolicy::EveryNode,
100 CheckpointPolicy::BarrierOnly => TriggerPolicy::BarrierOnly,
101 CheckpointPolicy::Manual => TriggerPolicy::Manual,
102 }
103 }
104}