|
nros rmw-cffi
C vtable for plugging a third-party RMW backend into nros
|
#include <rmw_entity.h>
Data Fields | |
| uint16_t | _reserved0 |
| uint8_t | _reserved1 [3] |
| uint8_t | avoid_ros_namespace_conventions |
| uint32_t | deadline_ms |
| uint16_t | depth |
| uint8_t | durability |
| uint8_t | history |
| uint32_t | lifespan_ms |
| uint8_t | liveliness_kind |
| uint32_t | liveliness_lease_ms |
| uint8_t | reliability |
| uint32_t | rx_buffer_hint |
Full DDS-shaped QoS profile.
Matches the field set of upstream rmw_qos_profile_t. Backends advertise per-policy support via the runtime's supported_qos_policies() query; entities created with a profile the active backend can't honour return NROS_RMW_RET_INCOMPATIBLE_QOS synchronously at create time — no silent downgrade.
Zero-valued fields ("off") preserve the cheap default for apps that don't request the policy:
deadline_ms = 0 → infinite deadline (no check).lifespan_ms = 0 → infinite lifespan (no expiry).liveliness_kind = NONE → no liveliness tracking.liveliness_lease_ms = 0 → infinite lease.depth is uint16_t (max 65 535). Embedded ROS application queue depths are typically 1–100; the 16-bit width saves two bytes per entity vs the upstream 32-bit choice.
| uint16_t nros_rmw_qos_t::_reserved0 |
Reserved; must be zero.
| uint8_t nros_rmw_qos_t::_reserved1[3] |
Reserved; must be zero.
| uint8_t nros_rmw_qos_t::avoid_ros_namespace_conventions |
If non-zero, topic-name encoding skips the ROS /rt/ prefix and uses raw application names. Matches upstream avoid_ros_namespace_conventions. 0 = false, non-zero = true. (uint8_t instead of bool; sizeof(_Bool) is impl- defined per C99 — uint8_t keeps the layout stable across toolchains.)
| uint32_t nros_rmw_qos_t::deadline_ms |
Subscriber: max acceptable inter-arrival time, ms. Publisher: max acceptable inter-publish (offered rate), ms. 0 = infinite (no deadline).
| uint16_t nros_rmw_qos_t::depth |
| uint8_t nros_rmw_qos_t::durability |
| uint8_t nros_rmw_qos_t::history |
| uint32_t nros_rmw_qos_t::lifespan_ms |
Sample expiry, ms. Subscriber filters samples older than this. 0 = infinite (no expiry).
| uint8_t nros_rmw_qos_t::liveliness_kind |
| uint32_t nros_rmw_qos_t::liveliness_lease_ms |
Liveliness lease, ms. Publisher must assert liveliness within this window or be considered dead. 0 = infinite.
| uint8_t nros_rmw_qos_t::reliability |
| uint32_t nros_rmw_qos_t::rx_buffer_hint |
Phase 231 (RFC-0038) — subscription receive-buffer size hint, bytes. Carries TopicInfo::rx_buffer_hint to create_subscriber so a size-classing backend (zenoh-pico) can pick a small/large receive buffer. 0 = unset. Appended at the tail (ABI-append); only create_subscriber reads it.