use crate::ops::{
replay::{
ROOT_REPLAY_RESPONSE_SCHEMA_VERSION,
guard::{ReplayPending, secs_to_ns},
receipt::{abort_reserved_receipt, commit_receipt_response, reserve_receipt_token},
},
storage::replay::ReplayReceiptOps,
};
pub fn reserve_root_slot(pending: &ReplayPending) {
reserve_receipt_token(&pending.receipt_token);
}
pub fn commit_root_slot(pending: &ReplayPending, response_bytes: Vec<u8>) {
commit_receipt_response(
&pending.receipt_token,
ROOT_REPLAY_RESPONSE_SCHEMA_VERSION,
response_bytes,
secs_to_ns(pending.issued_at),
);
}
#[must_use]
pub fn root_slot_len() -> usize {
ReplayReceiptOps::len()
}
#[must_use]
pub fn active_root_slot_len_for_caller(
caller: crate::cdk::types::Principal,
now_secs: u64,
) -> usize {
ReplayReceiptOps::active_len_for_actor(
crate::ops::replay::model::ReplayActor::direct_caller(caller),
secs_to_ns(now_secs),
)
}
pub fn purge_root_expired(now_ns: u64, limit: usize) -> usize {
ReplayReceiptOps::purge_expired(now_ns, limit)
}
pub fn remove_root_slot(pending: &ReplayPending) {
abort_reserved_receipt(&pending.receipt_token);
}