Skip to main content

StorageRetentionPolicy

Struct StorageRetentionPolicy 

Source
pub struct StorageRetentionPolicy { /* private fields */ }
Expand description

Tick-based storage retention policy with built-in entry tracking.

Maintains a set of blocks (entries) and evaluates configurable rules against them. Rules are sorted by descending priority. Pinned entries are always kept regardless of rules.

Implementations§

Source§

impl StorageRetentionPolicy

Source

pub fn new() -> Self

Creates a new, empty retention policy at tick 0.

Source

pub fn add_rule(&mut self, rule: TickRetentionRule)

Adds a rule, maintaining descending priority order. If a rule with the same name already exists it is replaced.

Source

pub fn remove_rule(&mut self, name: &str) -> bool

Removes the rule with the given name. Returns true if a rule was found and removed.

Source

pub fn add_entry(&mut self, block_cid: &str, size_bytes: u64, created_tick: u64)

Registers a new block entry at the given creation tick.

Source

pub fn pin(&mut self, block_cid: &str) -> bool

Pins a block, protecting it from deletion/archival. Returns true if the entry was found and pinned.

Source

pub fn unpin(&mut self, block_cid: &str) -> bool

Unpins a block, allowing retention rules to apply. Returns true if the entry was found and unpinned.

Source

pub fn evaluate(&self, block_cid: &str) -> TickRetentionAction

Evaluates retention rules against a single block.

Pinned blocks always return Keep. Rules are evaluated in descending priority order; the first matching rule wins. If no rule matches, the default is Keep.

Source

pub fn enforce(&mut self) -> Vec<(String, TickRetentionAction)>

Evaluates all entries and enforces the policy.

Entries marked for deletion are removed from the internal store. Returns a list of (cid, action) pairs for entries that received Archive or Delete actions.

Source

pub fn access(&mut self, block_cid: &str)

Updates the last_accessed_tick of the given entry to the current tick.

Source

pub fn tick(&mut self)

Advances the internal clock by one tick.

Source

pub fn entry_count(&self) -> usize

Returns the number of entries currently tracked.

Source

pub fn total_size_bytes(&self) -> u64

Returns the total size in bytes of all tracked entries.

Source

pub fn stats(&self) -> RetentionPolicyStats

Returns aggregate statistics about this policy.

Source

pub fn current_tick(&self) -> u64

Returns the current tick value.

Trait Implementations§

Source§

impl Default for StorageRetentionPolicy

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more