hikmah_kernel/
prospective.rs1use crate::ledger::MemoryStore;
2use crate::trace::{Trace, TraceKind};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct CommitmentDue {
7 pub trace: Trace,
8 pub overdue: bool,
9 pub due_in_ms: i128,
10}
11
12impl MemoryStore {
13 pub fn commitments_due(&self, now_ms: u64, within_ms: u64) -> Vec<CommitmentDue> {
14 let horizon = now_ms.saturating_add(within_ms);
15 let mut due = self
16 .active_traces()
17 .filter(|trace| trace.kind == TraceKind::Commitment)
18 .filter_map(|trace| {
19 let deadline = trace.deadline_ms?;
20 if deadline > horizon {
21 return None;
22 }
23 Some(CommitmentDue {
24 trace: trace.clone(),
25 overdue: deadline <= now_ms,
26 due_in_ms: deadline as i128 - now_ms as i128,
27 })
28 })
29 .collect::<Vec<_>>();
30 due.sort_by_key(|item| item.trace.deadline_ms.unwrap_or(u64::MAX));
31 due
32 }
33}