pub struct CacheRef { /* private fields */ }Expand description
A reference to a page cache that can be shared across threads via cloning, along with the page size that will be used with it. Provides the API for interacting with the page cache in a thread-safe manner.
Implementations§
Source§impl CacheRef
impl CacheRef
Sourcepub fn new(
pool: BufferPool,
page_size: NonZeroU16,
capacity: NonZeroUsize,
) -> Self
pub fn new( pool: BufferPool, page_size: NonZeroU16, capacity: NonZeroUsize, ) -> Self
Create a shared page-cache handle backed by pool.
The cache stores at most capacity pages, each exactly page_size bytes.
Initialization eagerly allocates and zeroes all cache slots from pool.
Sourcepub fn from_pooler(
pooler: &impl BufferPooler,
page_size: NonZeroU16,
capacity: NonZeroUsize,
) -> Self
pub fn from_pooler( pooler: &impl BufferPooler, page_size: NonZeroU16, capacity: NonZeroUsize, ) -> Self
Create a shared page-cache handle, extracting the storage BufferPool from a BufferPooler.
Sourcepub const fn pool(&self) -> &BufferPool
pub const fn pool(&self) -> &BufferPool
Returns the storage buffer pool associated with this cache.
Sourcepub fn next_id(&self) -> u64
pub fn next_id(&self) -> u64
Returns a unique id for the next blob that will use this page cache.
Sourcepub const fn offset_to_page(&self, offset: u64) -> (u64, u64)
pub const fn offset_to_page(&self, offset: u64) -> (u64, u64)
Convert a logical offset into the number of the page it belongs to and the offset within that page.
Sourcepub fn cache(&self, blob_id: u64, buf: &[u8], offset: u64) -> usize
pub fn cache(&self, blob_id: u64, buf: &[u8], offset: u64) -> usize
Cache the provided pages of data in the page cache, returning the remaining bytes that
didn’t fill a whole page. offset must be page aligned.
§Panics
- Panics if
offsetis not page aligned. - If the buffer is not the size of a page.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for CacheRef
impl !RefUnwindSafe for CacheRef
impl Send for CacheRef
impl Sync for CacheRef
impl Unpin for CacheRef
impl UnsafeUnpin for CacheRef
impl !UnwindSafe for CacheRef
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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