Partition

Struct Partition 

Source
pub struct Partition { /* private fields */ }
Expand description

A single partition backed by a memory lease.

Implementations§

Source§

impl Partition

Source

pub fn new(capacity: usize, stride: usize) -> Result<Self>

Create a new partition with the given capacity and slot stride.

Acquires a memory lease large enough for the header plus all slots.

Source

pub fn append(&mut self, key: Option<&[u8]>, value: &[u8]) -> Result<u64>

Append a message to the partition.

The message’s offset and timestamp fields are set automatically. Returns the assigned offset, or CapacityExceeded if the serialized message exceeds the slot stride.

Source

pub fn read_at(&self, offset: u64) -> Result<Option<Message>>

Read the message at the given absolute offset.

Returns None if the offset has been overwritten (wrapped) or is beyond the current write position.

Source

pub fn next_offset(&self) -> u64

Returns the next offset that will be assigned.

Source

pub fn oldest_offset(&self) -> u64

Returns the oldest available offset (messages before this have been overwritten).

Source

pub fn len(&self) -> usize

Returns the number of messages currently retained in the ring buffer.

Source

pub fn is_empty(&self) -> bool

Returns true if no messages are in the partition.

Source

pub fn capacity(&self) -> usize

Returns the slot capacity of this partition.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.