|
nros rmw-cffi
C vtable for plugging a third-party RMW backend into nros
|
#include <rmw_entity.h>
Data Fields | |
| const uint8_t * | data |
| size_t | len |
Global identifier for a publisher — upstream rmw_gid_t, field for field.
Phase 376 W4. Mirrors upstream exactly, including the 24-byte width and the implementation_identifier. The identifier matters MORE here than upstream: nros_rmw_cffi_register_named admits several backends in one image, so two gids are comparable only when it matches.
Comparison is over the whole array, so a producer MUST zero-pad an identifier shorter than 24 bytes rather than leave the tail undefined — otherwise two gids naming the same entity compare unequal on stack garbage.
One type and one value. A gid obtained from a take (rmw_message_info_t::publisher_gid) and one obtained from get_gid_for_publisher are the same width (the phase-467 RMW gap-closure design study's Q1(a)) and, since issue 1495, produced from ONE source on every backend that produces either: Cyclone's writer GUID on both sides (take_with_info); zenoh's XXH3-128 of the entity's liveliness keyexpr, which is rmw_zenoh_cpp's own derivation and so also the gid a stock graph query prints for the entity. Bytes to READ — phase-406 W2.
len is a FACT: how many bytes exist. Nothing is written through this, and const says so — publish handing a backend a mutable pointer is an invitation.
PASSED BY VALUE. Two words, and there is nothing to report back.
| const uint8_t* rmw_byte_span_t::data |
| size_t rmw_byte_span_t::len |