Expand description
A bringup’s own RMW session configuration, baked into the image as ONE const table – RFC-0109 D8, phase-514 W3.
The user writes their middleware’s own file (rmw/zenoh.json5, the
document rmw_zenoh reads from ZENOH_SESSION_CONFIG_URI). The build
lowers it ON THE HOST into the backend’s session properties
(nros-zenoh-session-config), and the generated entry hands the result to
the runtime once, before the board runner opens any session
(set_session_properties, nros_cpp_set_session_properties) – the same
shape as the launch remap table (super::launch_remap). Every
crate::Executor::open that is not given properties of its own passes
these to the backend as RmwConfig::properties.
The table describes the image’s DEFAULT session. A second session
(crate::SessionSpec, a bridge’s other domain) is not given it.
Structs§
- Session
Property - One session property, as the generated entry emits it: two NUL-terminated
strings in
.rodata.#[repr(C)]so the C table (nros_cpp_session_property_t) is this struct.
Enums§
- BadSession
Properties - Why
set_session_propertiesrefused a table.
Constants§
- MAX_
SESSION_ PROPERTIES - The most rows one session open hands the backend. The zenoh shim’s own
cap is lower on an embedded build and refuses a longer list there, naming
it; this one bounds the stack copy
with_session_propertiesmakes.
Functions§
- lent_
session_ ⚠properties - Read a table a caller LENDS for one multi-session open (issue 2123): the
C/C++ spelling of
crate::SessionSpec::properties,rows/lenstraight offNrosCppSessionSpecorrclc_session_spec_t. Writes the rows into the front ofoutand returns how many;rowsNULL withlen == 0is no table. Refuses (writing nothing usable) a NULLrowswithlen > 0or a row that does not read (BadSessionProperties::Row), and more rows than one session open carries or thanoutholds (BadSessionProperties::TooMany). - session_
properties - The installed table (empty until
set_session_properties). - set_
session_ properties - Install the image’s baked session properties. Call it ONCE, at boot, before any executor opens a session – the generated entry calls it before the board runner. A row that does not read refuses the whole table and installs nothing.
- with_
session_ properties - Run
fover the properties a session open hands its backend:explicitwhen the caller supplied any, else the installed table. Every road’s open goes through here (Executor::open, the C API’sopen_session), so the table cannot reach one road and miss another.