pub struct StorageTierManager {
pub records: RwLock<HashMap<String, BlockTierRecord>>,
pub policy: TierPolicy,
pub stats: TierStats,
}Expand description
Central manager for block tier tracking and reclassification.
§Concurrency
All block records are protected by a single RwLock<HashMap<…>>. Reads
(classification queries, summaries) hold a shared lock; writes
(access recording, reclassification) hold an exclusive lock.
Fields§
§records: RwLock<HashMap<String, BlockTierRecord>>Block records keyed by CID string.
policy: TierPolicyPolicy that governs tier classification.
stats: TierStatsObservable statistics.
Implementations§
Source§impl StorageTierManager
impl StorageTierManager
Sourcepub fn new(policy: TierPolicy) -> Self
pub fn new(policy: TierPolicy) -> Self
Create a new manager with the supplied policy.
Sourcepub fn with_default_policy() -> Self
pub fn with_default_policy() -> Self
Create a new manager with the default policy.
Sourcepub fn record_access(&self, cid: &str, size_bytes: u64)
pub fn record_access(&self, cid: &str, size_bytes: u64)
Record one access to the block identified by cid.
Creates the record on first access; subsequent calls increment
access_count and update last_accessed. The size_bytes parameter
is used only when creating a new record — it is ignored for existing
records (callers do not need to supply it after the first call).
Sourcepub fn classify(&self, cid: &str, window: Duration) -> StorageTier
pub fn classify(&self, cid: &str, window: Duration) -> StorageTier
Classify the block identified by cid using its current access rate
computed over window.
Returns StorageTier::Archive for unknown CIDs.
Sourcepub fn reclassify_all(&self, window: Duration) -> Vec<TierTransition>
pub fn reclassify_all(&self, window: Duration) -> Vec<TierTransition>
Reclassify every known block using window and return a list of
TierTransitions for blocks whose tier changed.
Also updates current_tier on the record so that subsequent calls to
blocks_in_tier reflect the new assignment.
Sourcepub fn blocks_in_tier(&self, tier: StorageTier) -> Vec<String>
pub fn blocks_in_tier(&self, tier: StorageTier) -> Vec<String>
Return all CIDs whose current_tier matches tier.
Sourcepub fn tier_summary(&self) -> HashMap<String, usize>
pub fn tier_summary(&self) -> HashMap<String, usize>
Return a map from tier name ("hot", "warm", "cold", "archive")
to the number of blocks currently assigned to that tier.
Sourcepub fn eviction_candidates(
&self,
tier: StorageTier,
max_count: usize,
) -> Vec<String>
pub fn eviction_candidates( &self, tier: StorageTier, max_count: usize, ) -> Vec<String>
Return up to max_count CIDs from tier sorted from least-recently
accessed (oldest last_accessed) to most-recently accessed (best
eviction candidates first).
Auto Trait Implementations§
impl !Freeze for StorageTierManager
impl !RefUnwindSafe for StorageTierManager
impl Send for StorageTierManager
impl Sync for StorageTierManager
impl Unpin for StorageTierManager
impl UnsafeUnpin for StorageTierManager
impl UnwindSafe for StorageTierManager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more