Skip to main content

kmp_application/memory/
write_clocks.rs

1use super::{MemoryData, WriteClockCoverage};
2
3/// Clocks in one canonical command, not the latest state of its memory refs.
4#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
5pub struct WriteClocks {
6    pub entries: usize,
7    pub occurred: WriteClockCoverage,
8    pub observed: WriteClockCoverage,
9    pub ingested: WriteClockCoverage,
10    pub valid_from: WriteClockCoverage,
11    pub valid_until: WriteClockCoverage,
12}
13
14impl WriteClocks {
15    pub(super) fn for_memory(memory: &MemoryData) -> Self {
16        Self {
17            entries: memory.entries.len(),
18            occurred: WriteClockCoverage::for_memory(memory, |c| c.occurred_at.as_deref()),
19            observed: WriteClockCoverage::for_memory(memory, |c| c.observed_at.as_deref()),
20            ingested: WriteClockCoverage::for_memory(memory, |c| c.ingested_at.as_deref()),
21            valid_from: WriteClockCoverage::for_memory(memory, |c| c.valid_from.as_deref()),
22            valid_until: WriteClockCoverage::for_memory(memory, |c| c.valid_until.as_deref()),
23        }
24    }
25}