pub struct PoolRef { /* 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 buffer pool in a thread-safe manner.
Implementations§
Source§impl PoolRef
impl PoolRef
Sourcepub fn new(page_size: NonZeroU16, capacity: NonZeroUsize) -> Self
pub fn new(page_size: NonZeroU16, capacity: NonZeroUsize) -> Self
Returns a new PoolRef 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 buffer pool.
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 buffer pool, 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 PoolRef
impl !RefUnwindSafe for PoolRef
impl Send for PoolRef
impl Sync for PoolRef
impl Unpin for PoolRef
impl !UnwindSafe for PoolRef
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