Skip to main content

CallerInbox

Struct CallerInbox 

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

The header a caller hands the backend: a ring’s geometry and where its bytes are.

#[repr(C)] and four plain words, because this is the shape an ABI slot has to carry. The road from nros-node to the zenoh shim runs through nros-rmw-cffi’s C vtable (packages/core/nros-rmw-abi/include/nros/), which today has no create_service variant that takes one; until it does, crate::Session::SUPPORTS_CALLER_INBOX is false on every backend the runtime can reach and a family’s ServiceInboxSpec resolves to ServiceInboxSpec::Backend. Laying this out as an ABI struct now is what keeps that a forwarding problem rather than a redesign.

Implementations§

Source§

impl CallerInbox

Source

pub const fn over<const S: usize, const D: usize>( storage: &'static CallerInboxStorage<S, D>, ) -> Self

A header over storage the caller owns for the life of the program.

const, so a family writes static INBOX: CallerInbox = CallerInbox::over(&STORAGE); and hands the reference to ServiceInboxSpec::Caller.

Source

pub const fn slot_bytes(&self) -> usize

Bytes one request slot holds.

Source

pub const fn depth(&self) -> usize

Slots in the ring.

Source

pub const fn storage_bytes(&self) -> usize

Bytes this ring’s storage occupies (slots and entries).

Source

pub fn is_over<const S: usize, const D: usize>( &self, storage: &'static CallerInboxStorage<S, D>, ) -> bool

Does this header sit over storage? For tests, which need to say “the bytes landed in the caller’s static” rather than infer it.

Trait Implementations§

Source§

impl Clone for CallerInbox

Source§

fn clone(&self) -> CallerInbox

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for CallerInbox

Source§

impl Send for CallerInbox

Source§

impl Sync for CallerInbox

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.