pub struct BlockCacheReader<R> { /* private fields */ }Implementations§
Source§impl<R: RangeReader> BlockCacheReader<R>
impl<R: RangeReader> BlockCacheReader<R>
Sourcepub fn new(inner: R, block: u64) -> Self
pub fn new(inner: R, block: u64) -> Self
Wrap inner, fetching block-aligned blocks (clamped to ≥ 4 KiB) and
keeping at most DEFAULT_CACHE_CAP bytes of them resident.
Sourcepub fn with_cache_cap(self, cap: u64) -> Self
pub fn with_cache_cap(self, cap: u64) -> Self
Override the resident-byte cap. The cap is enforced between reads: a
single read spanning more than cap bytes of blocks is still served
exactly (its blocks are resident while it assembles) and the cache is
trimmed back under the cap right after. u64::MAX disables eviction.
Sourcepub fn cached_bytes(&self) -> u64
pub fn cached_bytes(&self) -> u64
Bytes currently resident in the cache (for stats and tests).
Trait Implementations§
Source§impl<R: RangeReader> RangeReader for BlockCacheReader<R>
impl<R: RangeReader> RangeReader for BlockCacheReader<R>
Source§fn concurrency(&self) -> usize
fn concurrency(&self) -> usize
How many ranges this reader can usefully have in flight at once — the
planner’s hint for probe-vs-scan and batch-size decisions (a phone’s
serial sync-XHR reader reports 1; the CLI’s threaded HTTP client and the
browser’s concurrent-fetch variants report their fan-out). Purely
advisory: correctness never depends on it. Defaults to 1 (sequential).
Source§fn read_at(&self, offset: u64, len: u64) -> Result<Vec<u8>>
fn read_at(&self, offset: u64, len: u64) -> Result<Vec<u8>>
Read
len bytes starting at offset. Implementations should error on
an out-of-bounds range rather than truncating.Source§fn read_many(&self, ranges: &[(u64, u64)]) -> Result<Vec<Vec<u8>>>
fn read_many(&self, ranges: &[(u64, u64)]) -> Result<Vec<Vec<u8>>>
Read several
(offset, len) ranges, returning each range’s bytes in
request order. These ranges are independent, so a reader whose backing
store is high-latency but parallelizable (an HTTP client) overrides this
to issue the reads concurrently — turning N round trips into ~N/P. The
default fetches them sequentially. Any range failing fails the batch.Auto Trait Implementations§
impl<R> !Freeze for BlockCacheReader<R>
impl<R> RefUnwindSafe for BlockCacheReader<R>where
R: RefUnwindSafe,
impl<R> Send for BlockCacheReader<R>where
R: Send,
impl<R> Sync for BlockCacheReader<R>where
R: Sync,
impl<R> Unpin for BlockCacheReader<R>where
R: Unpin,
impl<R> UnsafeUnpin for BlockCacheReader<R>where
R: UnsafeUnpin,
impl<R> UnwindSafe for BlockCacheReader<R>where
R: UnwindSafe,
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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 more