pub struct ResourceContext { /* private fields */ }Expand description
Thread-local resource context tracking active leases and operation counts.
Used by the #[grafos::instrument] proc macro to capture resource
metadata on function entry/exit, and by grafos-std integration hooks
to push/pop lease tracking automatically.
§Examples
use grafos_observe::context::{ResourceContext, LeaseInfo};
use grafos_observe::ResourceType;
ResourceContext::with_mut(|ctx| {
ctx.push_lease(LeaseInfo {
resource_type: ResourceType::Mem,
lease_id: 1,
node_addr: "10.10.0.11".into(),
bytes_held: 4096,
});
});
ResourceContext::with(|ctx| {
assert_eq!(ctx.lease_count(), 1);
assert_eq!(ctx.total_bytes_held(), 4096);
assert_eq!(ctx.nodes_involved(), 1);
});
ResourceContext::with_mut(|ctx| {
ctx.pop_lease(1);
});
ResourceContext::with(|ctx| {
assert_eq!(ctx.lease_count(), 0);
});Implementations§
Source§impl ResourceContext
impl ResourceContext
Sourcepub fn with<F, R>(f: F) -> Rwhere
F: FnOnce(&ResourceContext) -> R,
pub fn with<F, R>(f: F) -> Rwhere
F: FnOnce(&ResourceContext) -> R,
Access the current thread-local resource context immutably.
Sourcepub fn with_mut<F, R>(f: F) -> Rwhere
F: FnOnce(&mut ResourceContext) -> R,
pub fn with_mut<F, R>(f: F) -> Rwhere
F: FnOnce(&mut ResourceContext) -> R,
Access the current thread-local resource context mutably.
Sourcepub fn current_snapshot() -> ContextSnapshot
pub fn current_snapshot() -> ContextSnapshot
Take a snapshot of the current thread-local resource context.
Source§impl ResourceContext
impl ResourceContext
Sourcepub fn push_lease(&mut self, info: LeaseInfo)
pub fn push_lease(&mut self, info: LeaseInfo)
Push a new lease into the context (called on acquire).
Sourcepub fn pop_lease(&mut self, lease_id: u64)
pub fn pop_lease(&mut self, lease_id: u64)
Remove a lease from the context by lease_id (called on drop/free).
Sourcepub fn lease_count(&self) -> usize
pub fn lease_count(&self) -> usize
Number of active leases in the current context.
Sourcepub fn total_bytes_held(&self) -> u64
pub fn total_bytes_held(&self) -> u64
Total bytes held across all active leases.
Sourcepub fn nodes_involved(&self) -> usize
pub fn nodes_involved(&self) -> usize
Number of distinct nodes involved in active leases.
Sourcepub fn active_leases(&self) -> &[LeaseInfo]
pub fn active_leases(&self) -> &[LeaseInfo]
Read-only access to active leases.
Sourcepub fn ops_mut(&mut self) -> &mut OpCounters
pub fn ops_mut(&mut self) -> &mut OpCounters
Mutable access to operation counters.
Sourcepub fn ops(&self) -> &OpCounters
pub fn ops(&self) -> &OpCounters
Read-only access to operation counters.
Sourcepub fn snapshot(&self) -> ContextSnapshot
pub fn snapshot(&self) -> ContextSnapshot
Take a snapshot of the current context state.
Sourcepub fn record_fbmu_write(&mut self)
pub fn record_fbmu_write(&mut self)
Record an FBMU write operation.
Sourcepub fn record_fbmu_read(&mut self)
pub fn record_fbmu_read(&mut self)
Record an FBMU read operation.
Sourcepub fn record_fbbu_write(&mut self)
pub fn record_fbbu_write(&mut self)
Record an FBBU write operation.
Sourcepub fn record_fbbu_read(&mut self)
pub fn record_fbbu_read(&mut self)
Record an FBBU read operation.
Sourcepub fn record_gpu_submit(&mut self)
pub fn record_gpu_submit(&mut self)
Record a GPU submit operation.
Sourcepub fn record_tasklet_submit(&mut self)
pub fn record_tasklet_submit(&mut self)
Record a tasklet submit operation.