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(page_size: NonZeroU16, capacity: NonZeroUsize) -> Self
pub fn new(page_size: NonZeroU16, capacity: NonZeroUsize) -> Self
Returns a new CacheRef that will buffer up to capacity pages with the
given page_size.
Sourcepub async fn next_id(&self) -> u64
pub async 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 async fn cache(&self, blob_id: u64, buf: &[u8], offset: u64) -> usize
pub async 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 !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
Mutably borrows from an owned value. Read more
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>
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