Skip to main content

ImageRegistry

Struct ImageRegistry 

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

Persistent LRU cache mapping opaque keys to SnapshotIds.

Backed by a single SQLite table with WAL journaling. The registry tracks the last-access timestamp for every entry and evicts the oldest entries when the configured capacity is exceeded.

The inner Connection is wrapped in a Mutex so that the registry (and any struct containing it, e.g. crate::vm::HmVm) satisfies Send + Sync for safe sharing across async tasks.

Implementations§

Source§

impl ImageRegistry

Source

pub fn open(path: &Path, capacity: NonZeroU64) -> Result<Self>

Open or create the registry database at path.

The parent directory is created if it does not exist. The database uses WAL mode and NORMAL synchronous for a good balance of durability and performance.

§Errors

Returns an error if the database cannot be opened or the schema cannot be applied.

Source

pub fn get(&self, key: &str) -> Option<SnapshotId>

Look up a cached snapshot and update its access time.

Returns None if no entry exists for key.

Source

pub fn put(&self, key: &str, snapshot: &SnapshotId) -> Vec<SnapshotId>

Insert or update a cache entry.

Returns the SnapshotIds of any entries evicted to keep the registry within its configured capacity. The caller is responsible for cleaning up the backend resources associated with evicted snapshots.

Source

pub fn invalidate(&self, key: &str) -> Option<SnapshotId>

Remove a specific entry.

Returns the removed snapshot’s ID so the caller can clean up backend resources, or None if the key was not present.

Source

pub fn all_snapshot_ids(&self) -> Vec<SnapshotId>

Return every stored snapshot ID.

Used by hm cache clean to remove the backing backend images before the registry DB is deleted — without this the images orphan beyond recovery by key. Order is unspecified.

Source

pub fn len(&self) -> u64

Returns the number of cached entries.

Source

pub fn is_empty(&self) -> bool

Returns true if the registry contains no entries.

Trait Implementations§

Source§

impl Debug for ImageRegistry

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

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<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, 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<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