Skip to main content

RingBuffer

Struct RingBuffer 

Source
pub struct RingBuffer<T> { /* private fields */ }
Expand description

Ring Buffer.

Implementations§

Source§

impl<T> RingBuffer<T>

Source

pub fn new<F>(factory: F, size: usize, sequencer: Arc<dyn Sequencer>) -> Self
where F: Fn() -> T,

Creates a new ring buffer with the given factory, size, and sequencer.

Source

pub fn add_gating_sequences(&self, sequences: Vec<Arc<Sequence>>)

Adds gating sequences to the sequencer.

Source

pub fn get(&self, sequence: i64) -> &T

Gets a reference to the event at the given sequence.

Source

pub fn get_mut(&mut self, sequence: i64) -> &mut T

Gets a mutable reference to the event at the given sequence.

Source

pub unsafe fn get_unchecked(&self, sequence: i64) -> &T

Unsafe access for high performance (internal use).

§Safety

The caller must ensure that the sequence number is valid and that no other thread is concurrently modifying the same slot.

Source

pub unsafe fn get_unchecked_mut(&self, sequence: i64) -> &mut T

Unsafe mutable access for high performance (internal use).

§Safety

The caller must ensure that the sequence number is valid and that they have exclusive access to the slot (e.g., via the Disruptor protocol).

Source

pub fn next(&self) -> i64

Claims the next sequence in the ring buffer.

Source

pub fn publish(&self, sequence: i64)

Publishes the sequence, making it available to consumers.

Trait Implementations§

Source§

impl<T: Send> Send for RingBuffer<T>

Source§

impl<T: Send> Sync for RingBuffer<T>

Auto Trait Implementations§

§

impl<T> Freeze for RingBuffer<T>

§

impl<T> !RefUnwindSafe for RingBuffer<T>

§

impl<T> Unpin for RingBuffer<T>

§

impl<T> !UnwindSafe for RingBuffer<T>

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.