pub struct ObjectLifecycleManager { /* private fields */ }Expand description
Policy-driven object lifecycle manager.
Objects are registered and then evaluated against a set of OlmRetentionRules
every time apply_rules is called. The manager updates
object states internally and returns the list of actions that must be executed
by the caller (e.g., actually moving bytes between tiers or removing data).
Implementations§
Source§impl ObjectLifecycleManager
impl ObjectLifecycleManager
Sourcepub fn new(default_ttl_ms: Option<u64>) -> Self
pub fn new(default_ttl_ms: Option<u64>) -> Self
Create a new manager with an optional default TTL (milliseconds).
When default_ttl_ms is Some(n), objects that match no rule and are
older than n ms are deleted automatically.
Sourcepub fn add_rule(&mut self, rule: OlmRetentionRule)
pub fn add_rule(&mut self, rule: OlmRetentionRule)
Append a rule. Rules are evaluated in priority-descending order; equal-priority rules are evaluated in insertion order (earlier first).
Sourcepub fn register_object(
&mut self,
object: ManagedObject,
) -> Result<(), LifecycleError>
pub fn register_object( &mut self, object: ManagedObject, ) -> Result<(), LifecycleError>
Register a new object. Returns LifecycleError::ObjectAlreadyExists
if an object with the same ID already exists.
Sourcepub fn unregister_object(
&mut self,
object_id: &str,
) -> Result<ManagedObject, LifecycleError>
pub fn unregister_object( &mut self, object_id: &str, ) -> Result<ManagedObject, LifecycleError>
Remove and return a registered object.
Sourcepub fn access_object(
&mut self,
object_id: &str,
now: u64,
) -> Result<(), LifecycleError>
pub fn access_object( &mut self, object_id: &str, now: u64, ) -> Result<(), LifecycleError>
Update last_accessed to now.
Returns LifecycleError::InvalidState when the object is in
Deleted state (deleted objects cannot be accessed).
Sourcepub fn apply_rules(&mut self, now: u64) -> Vec<OlmLifecycleAction>
pub fn apply_rules(&mut self, now: u64) -> Vec<OlmLifecycleAction>
Evaluate all active objects against registered rules and the default TTL.
Returns a list of actions. The manager also updates object states
internally, so callers do not need to call execute_action to keep
the manager consistent — but they should use the returned actions to
perform the actual data movement / deletion.
Sourcepub fn execute_action(
&mut self,
action: &OlmLifecycleAction,
_now: u64,
) -> Result<(), LifecycleError>
pub fn execute_action( &mut self, action: &OlmLifecycleAction, _now: u64, ) -> Result<(), LifecycleError>
Apply the state change for a single action.
This is idempotent for re-applying the same action and can be called after the fact if needed. Returns an error if the referenced object does not exist.
Sourcepub fn objects_in_state(&self, state_name: &str) -> Vec<&ManagedObject>
pub fn objects_in_state(&self, state_name: &str) -> Vec<&ManagedObject>
Return all objects whose state name matches state_name.
Valid names: "Active", "Expiring", "Archived", "MarkedForDeletion",
"Deleted".
Sourcepub fn objects_expiring_before(&self, timestamp: u64) -> Vec<&ManagedObject>
pub fn objects_expiring_before(&self, timestamp: u64) -> Vec<&ManagedObject>
Return all objects in Expiring state whose expires_at ≤ timestamp.
Sourcepub fn objects_by_tier(&self, tier: &str) -> Vec<&ManagedObject>
pub fn objects_by_tier(&self, tier: &str) -> Vec<&ManagedObject>
Return all objects on tier, sorted by created_at ascending.
Sourcepub fn purge_deleted(&mut self, now: u64) -> usize
pub fn purge_deleted(&mut self, now: u64) -> usize
Remove logically deleted objects that were created more than 1 hour ago.
Returns the number of objects removed.
Sourcepub fn total_active_bytes(&self) -> u64
pub fn total_active_bytes(&self) -> u64
Sum of size_bytes for all Active and Expiring objects.
Sourcepub fn stats(&self) -> OlmLifecycleStats
pub fn stats(&self) -> OlmLifecycleStats
Aggregate statistics snapshot.
Auto Trait Implementations§
impl Freeze for ObjectLifecycleManager
impl RefUnwindSafe for ObjectLifecycleManager
impl Send for ObjectLifecycleManager
impl Sync for ObjectLifecycleManager
impl Unpin for ObjectLifecycleManager
impl UnsafeUnpin for ObjectLifecycleManager
impl UnwindSafe for ObjectLifecycleManager
Blanket Implementations§
impl<T> Allocation for T
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