pub struct ScriptCache { /* private fields */ }Expand description
Shard cache keyed by canonical script path. One per shard file.
Implementations§
Source§impl ScriptCache
impl ScriptCache
Sourcepub fn get(
&self,
path: &str,
mtime_secs: i64,
mtime_nsecs: i64,
env_fingerprint: u64,
) -> Option<Vec<u8>>
pub fn get( &self, path: &str, mtime_secs: i64, mtime_nsecs: i64, env_fingerprint: u64, ) -> Option<Vec<u8>>
Cache lookup. Returns None on miss, mtime mismatch, version drift, or
zshrs binary newer than the cached entry.
Sourcepub fn put(
&self,
path: &str,
mtime_secs: i64,
mtime_nsecs: i64,
env_fingerprint: u64,
chunk_blob: Vec<u8>,
) -> Result<(), String>
pub fn put( &self, path: &str, mtime_secs: i64, mtime_nsecs: i64, env_fingerprint: u64, chunk_blob: Vec<u8>, ) -> Result<(), String>
Insert / replace an entry. Serializes the whole shard and atomic-renames.
Sourcepub fn put_many(&self, batch: Vec<PendingPut>) -> Result<(), String>
pub fn put_many(&self, batch: Vec<PendingPut>) -> Result<(), String>
Insert / replace several entries with ONE lock, read and rewrite of the
shard. put costs a full shard rewrite and fsync per call, so a shell
that sources a hundred files for the first time would pay that a hundred
times; the sourced-file path buffers and flushes here instead.
Sourcepub fn list_scripts(&self) -> Vec<(String, f64, String, String)>
pub fn list_scripts(&self) -> Vec<(String, f64, String, String)>
(path, chunk_kb, version, cached_at_localstr) per entry,
sorted by cached_at desc.
Sourcepub fn mirror_rows(
&self,
pattern: &str,
) -> Option<Vec<(String, f64, String, String)>>
pub fn mirror_rows( &self, pattern: &str, ) -> Option<Vec<(String, f64, String, String)>>
(path, chunk_kb, version, cached_at_localstr) for every cached script
whose path contains pattern, newest first — read from scripts.db
after refreshing it, plus entries still buffered in this process.
None when the mirror cannot be opened; callers fall back to
Self::list_scripts.
Sourcepub fn evict_stale(&self) -> usize
pub fn evict_stale(&self) -> usize
Drop entries whose source file vanished or whose mtime changed.
Auto Trait Implementations§
impl !Freeze for ScriptCache
impl !RefUnwindSafe for ScriptCache
impl Send for ScriptCache
impl Sync for ScriptCache
impl Unpin for ScriptCache
impl UnsafeUnpin for ScriptCache
impl UnwindSafe for ScriptCache
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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