pub struct RingBuffer { /* private fields */ }Expand description
A lock-free ring buffer for message passing.
The ring buffer uses atomic head/tail pointers for lock-free operation. Messages are stored inline after the entry header, or as descriptors pointing to shared region data.
Implementations§
Source§impl RingBuffer
impl RingBuffer
Sourcepub fn new(
region: RegionHandle,
size: u32,
max_msg_size: u32,
buffer: *mut u8,
buffer_len: usize,
) -> Result<Self>
pub fn new( region: RegionHandle, size: u32, max_msg_size: u32, buffer: *mut u8, buffer_len: usize, ) -> Result<Self>
Create a new ring buffer.
§Arguments
region- Handle to the backing regionsize- Number of entries (must be power of 2)max_msg_size- Maximum message size in bytesbuffer- Pointer to the ring buffer memorybuffer_len- Length of the buffer
§Errors
Returns InvalidParameter if size is not a power of 2.
Sourcepub fn region(&self) -> RegionHandle
pub fn region(&self) -> RegionHandle
Returns the region handle.
Sourcepub fn max_msg_size(&self) -> u32
pub fn max_msg_size(&self) -> u32
Returns the maximum message size.
Sourcepub fn enqueue_descriptor(
&mut self,
descriptor: &MessageDescriptor,
priority: MsgPriority,
) -> Result<()>
pub fn enqueue_descriptor( &mut self, descriptor: &MessageDescriptor, priority: MsgPriority, ) -> Result<()>
Trait Implementations§
impl Send for RingBuffer
impl Sync for RingBuffer
Auto Trait Implementations§
impl !Freeze for RingBuffer
impl RefUnwindSafe for RingBuffer
impl Unpin for RingBuffer
impl UnsafeUnpin for RingBuffer
impl UnwindSafe for RingBuffer
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