grafos_leasekit/lib.rs
1//! Lease renewal and TTL budgeting for grafOS.
2//!
3//! This crate provides poll-driven lease renewal infrastructure. The core
4//! design is timer-free: callers drive progress by calling
5//! [`RenewalManager::tick`] with the current unix timestamp. This makes
6//! the crate compatible with `no_std`, WASM, and bare-metal environments.
7//!
8//! # Core types
9//!
10//! | Type | Purpose |
11//! |------|---------|
12//! | [`RenewableLease`] | Trait abstracting lease renewal across resource types |
13//! | [`RenewalPolicy`] | Configures when to renew (threshold, jitter, backoff) |
14//! | [`Backoff`] | Deterministic exponential backoff with configurable cap |
15//! | [`RenewalManager`] | Manages multiple leases and drives renewals via `tick()` |
16//!
17//! # Adapters
18//!
19//! Adapters for all grafos-std lease types are provided in the [`adapter`]
20//! module: [`MemLeaseAdapter`], [`BlockLeaseAdapter`], [`CpuLeaseAdapter`],
21//! [`GpuLeaseAdapter`], [`NetLeaseAdapter`].
22//!
23//! # Quick start
24//!
25//! ```rust
26//! use grafos_leasekit::{RenewalManager, RenewalPolicy};
27//!
28//! let mut mgr = RenewalManager::new();
29//! let policy = RenewalPolicy::default();
30//!
31//! // Register a lease (id, expiry, policy)
32//! mgr.register(1, 1100, policy);
33//!
34//! // Drive renewals — call tick() periodically with current time
35//! let summary = mgr.tick(1080); // 80% through TTL
36//! ```
37//!
38//! # Feature flags
39//!
40//! | Feature | Default | Effect |
41//! |---------|---------|--------|
42//! | `std` | Yes | Enables `std` in grafos-std |
43//! | `observe` | No | Enables `grafos-observe` metrics and events |
44
45#![cfg_attr(not(feature = "std"), no_std)]
46
47extern crate alloc;
48
49pub mod adapter;
50mod backoff;
51mod manager;
52mod policy;
53mod renewable;
54
55pub use backoff::Backoff;
56pub use manager::{RenewalManager, RenewalSummary};
57pub use policy::RenewalPolicy;
58pub use renewable::{LeaseStatus, RenewableLease};
59
60pub use adapter::{
61 BlockLeaseAdapter, CpuLeaseAdapter, GpuLeaseAdapter, MemLeaseAdapter, NetLeaseAdapter,
62};