pub struct ModelsDiskCache { /* private fields */ }Expand description
Last-good disk stats for the models dir plus a single-flight refresh
claim. /api/status reads the snapshot synchronously and — when it has
gone stale — at most one request wins the claim and kicks a background
spawn_blocking refresh; everyone else keeps serving the last-good value.
A hung statvfs therefore costs one leaked blocking-pool thread and a stale
stat, never a parked runtime worker.
Implementations§
Source§impl ModelsDiskCache
impl ModelsDiskCache
Sourcepub fn read(&self) -> (Option<DiskUsage>, bool)
pub fn read(&self) -> (Option<DiskUsage>, bool)
Current snapshot plus whether the caller won the refresh claim.
Returns true at most once per stale period — the winner must call
ModelsDiskCache::store (or ModelsDiskCache::release) to let
the next refresh happen.
Trait Implementations§
Source§impl Default for ModelsDiskCache
impl Default for ModelsDiskCache
Source§fn default() -> ModelsDiskCache
fn default() -> ModelsDiskCache
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl !Freeze for ModelsDiskCache
impl RefUnwindSafe for ModelsDiskCache
impl Send for ModelsDiskCache
impl Sync for ModelsDiskCache
impl Unpin for ModelsDiskCache
impl UnsafeUnpin for ModelsDiskCache
impl UnwindSafe for ModelsDiskCache
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
Mutably borrows from an owned value. Read more
impl<T> ErasedDestructor for Twhere
T: 'static,
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>
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 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>
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 moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().