RefCounter

Trait RefCounter 

Source
pub trait RefCounter: Send + Sync {
    // Required methods
    fn acquire(&self) -> Result<u32>;
    fn release(&self) -> Result<u32>;
    fn count(&self) -> Result<u32>;
    fn try_lock(&self) -> Result<bool>;
    fn unlock(&self) -> Result<()>;
}
Expand description

Core trait for kernel-level reference counting.

Implementations must guarantee that reference counts are automatically decremented by the kernel when a process crashes or exits abnormally.

This is NOT a userspace reference count - it relies on OS primitives that the kernel manages.

Required Methods§

Source

fn acquire(&self) -> Result<u32>

Acquire a reference (increment count).

Returns the count AFTER incrementing. First acquisition (0→1) should trigger on_first_acquire callback.

Source

fn release(&self) -> Result<u32>

Release a reference (decrement count).

Returns the count AFTER decrementing. Last release (1→0) should trigger on_last_release callback.

Note: This is called for graceful shutdown. On crash, the kernel handles the decrement automatically.

Source

fn count(&self) -> Result<u32>

Get current reference count.

This may be slightly stale in multi-process scenarios. Use for diagnostics, not critical decisions.

Source

fn try_lock(&self) -> Result<bool>

Try to acquire startup lock (for coordinating service startup).

Returns true if lock acquired, false if another process holds it. This is non-blocking.

Source

fn unlock(&self) -> Result<()>

Release startup lock.

Implementors§