kmp_application/memory/
write_relation_clocks.rs1use super::MemoryData;
2
3#[derive(Debug, Clone, Default, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
5pub struct WriteRelationClocks {
6 pub relations: usize,
7 pub occurred: usize,
8 pub observed: usize,
9 pub ingested: usize,
10 pub valid_from: usize,
11 pub valid_until: usize,
12}
13
14impl WriteRelationClocks {
15 pub(super) fn for_memory(memory: &MemoryData) -> Self {
16 let mut coverage = Self::default();
17 for relation in &memory.relations {
18 if relation.semantic_class == "structural" {
19 continue;
20 }
21 coverage.relations += 1;
22 if let Some(clocks) = &relation.clocks {
23 coverage.occurred += usize::from(clocks.occurred_at.is_some());
24 coverage.observed += usize::from(clocks.observed_at.is_some());
25 coverage.ingested += usize::from(clocks.ingested_at.is_some());
26 coverage.valid_from += usize::from(clocks.valid_from.is_some());
27 coverage.valid_until += usize::from(clocks.valid_until.is_some());
28 }
29 }
30 coverage
31 }
32}