Skip to main content

PubSubRing

Struct PubSubRing 

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

One-producer many-subscriber broadcast ring with per-subscriber positions.

Implementations§

Source§

impl PubSubRing

Source

pub fn create_anon(capacity: usize) -> Result<Self>

Construct an anonymous in-process pub/sub ring.

Source

pub fn create(path: impl AsRef<Path>, capacity: usize) -> Result<Self>

Construct a file-backed pub/sub ring. Cross-process via the OS page cache.

Source

pub fn open(path: impl AsRef<Path>, expected_capacity: usize) -> Result<Self>

Open an existing file-backed pub/sub ring. Validates magic

  • capacity.
Source

pub fn create_from_shm(shm: ShmFile, capacity: usize) -> Result<Self>

Construct a fresh pub/sub ring on top of a named RAM-resident shared-memory backing.

Source

pub fn open_from_shm(shm: ShmFile, expected_capacity: usize) -> Result<Self>

Open an existing named ShmFs-backed pub/sub ring.

Source

pub fn head(&self) -> u64

Producer’s published head. Equals the next position that will be assigned to a publish call.

Source

pub fn capacity(&self) -> usize

Capacity in slots (always a power of 2).

Source

pub fn publish(&self, payload: &[u8]) -> u64

Publish one payload. Returns the absolute position assigned to this item. Caller MUST be the single producer.

Source

pub fn read_at( &self, position: u64, out: &mut [u8], ) -> Result<(), PubSubReadError>

Read the payload at absolute position. The subscriber supplies a buffer of at least PUBSUB_PAYLOAD_BYTES.

Returns Ok(()) on success (payload copied into out), Err(Pending) when the position has not been published yet, Err(Lost) when the slot has wrapped past position.

Trait Implementations§

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.