Struct RingBufferBuilder

Source
pub struct RingBufferBuilder<'slf, 'cb> { /* private fields */ }
Expand description

Builds RingBuffer instances.

ringbufs are a special kind of Map, used to transfer data between Programs and userspace. As of Linux 5.8, the ringbuf map is now preferred over the perf buffer.

Implementations§

Source§

impl<'slf, 'cb: 'slf> RingBufferBuilder<'slf, 'cb>

Source

pub fn new() -> Self

Create a new RingBufferBuilder object.

Source

pub fn add<NewF>( &mut self, map: &'slf dyn MapCore, callback: NewF, ) -> Result<&mut Self>
where NewF: FnMut(&[u8]) -> i32 + 'cb,

Add a new ringbuf map and associated callback to this ring buffer manager. The callback should take one argument, a slice of raw bytes, and return an i32.

Negative return values in the callback will stop ring buffer consumption early and propagate the error code to the polling caller.

The callback provides a raw byte slice. You may find libraries such as plain helpful.

Source

pub fn build(self) -> Result<RingBuffer<'cb>>

Build a new RingBuffer. Must have added at least one ringbuf.

Trait Implementations§

Source§

impl<'slf, 'cb> Debug for RingBufferBuilder<'slf, 'cb>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'slf, 'cb> Default for RingBufferBuilder<'slf, 'cb>

Source§

fn default() -> RingBufferBuilder<'slf, 'cb>

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<'slf, 'cb> Freeze for RingBufferBuilder<'slf, 'cb>

§

impl<'slf, 'cb> !RefUnwindSafe for RingBufferBuilder<'slf, 'cb>

§

impl<'slf, 'cb> !Send for RingBufferBuilder<'slf, 'cb>

§

impl<'slf, 'cb> !Sync for RingBufferBuilder<'slf, 'cb>

§

impl<'slf, 'cb> Unpin for RingBufferBuilder<'slf, 'cb>

§

impl<'slf, 'cb> !UnwindSafe for RingBufferBuilder<'slf, 'cb>

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.