pub struct FlatReader<T: FlatStruct> { /* private fields */ }Expand description
Reads FlatStruct samples directly from SHM slots.
Implementations§
Source§impl<T: FlatStruct> FlatReader<T>
impl<T: FlatStruct> FlatReader<T>
Sourcepub fn new(alloc: Arc<InMemorySlotAllocator>, reader_index: u8) -> Self
pub fn new(alloc: Arc<InMemorySlotAllocator>, reader_index: u8) -> Self
Creates a reader over an allocator.
Sourcepub fn read(&self) -> Result<Option<T>, SlotError>
pub fn read(&self) -> Result<Option<T>, SlotError>
Spec §9.1 read_flat. Returns the newest unread sample. Automatically sets this reader’s bit in reader_mask.
Spec §6.1 type-hash cross-validation: before reading a slot,
T::TYPE_HASH is checked against the hash stored on the
SlotBackend. On mismatch: no slots are dereferenced,
Err(SlotError::SampleTooLarge) with a schema-drift indication.
§Errors
SampleTooLargeon TYPE_HASH mismatch (Spec §6.1).- Wire/layout errors or slot-lock poison as usual.
Sourcepub fn read_ref(&self) -> Result<Option<FlatSampleRef<T>>, SlotError>
pub fn read_ref(&self) -> Result<Option<FlatSampleRef<T>>, SlotError>
Spec §9.2/§9.3 read_flat (reference variant). Returns the newest
unread sample wrapped in a FlatSampleRef whose Drop sets this
reader’s bit — i.e. the delivered slot stays un-recyclable for the
lifetime of the returned reference (zero-copy lifetime binding), and is
released when the reference drops. All other scanned slots are marked
read immediately, as in Self::read.
§Errors
As Self::read.
Sourcepub fn read_blocking(&self, timeout: Duration) -> Result<Option<T>, SlotError>
pub fn read_blocking(&self, timeout: Duration) -> Result<Option<T>, SlotError>
Spec §4.2 event-driven read. Returns the newest unread sample, blocking
on the allocator’s notify (NO busy-poll) until one arrives or timeout
elapses (then Ok(None)). The writer’s commit_slot bumps the notify
generation, waking this reader.
§Errors
As Self::read.