nros rmw-cffi
C vtable for plugging a third-party RMW backend into nros
Loading...
Searching...
No Matches
rmw_entity.h
Go to the documentation of this file.
1#ifndef NROS_RMW_ENTITY_H
2#define NROS_RMW_ENTITY_H
3
4#include <stdbool.h>
5#include <stdint.h>
6#include <stddef.h>
7#include "nros/rmw_ret.h" /* the two pure functions below return rmw_ret_t */
8
39/* ------------------------------------------------------------------ */
40/* QoS profile — full DDS shape (matches `rmw_qos_profile_t`) */
41/* ------------------------------------------------------------------ */
42
43/* Policy values carry UPSTREAM's numbering — phase-376 W5/B2.
44 *
45 * They did not until 2026-08-24, and the disagreement was not academic. Ours
46 * were a dense 0/1 pair per policy, which put a DIFFERENT meaning on the same
47 * integer:
48 *
49 * value | upstream | ours (before)
50 * ------|-----------------------------------|-------------------
51 * 0 | *_SYSTEM_DEFAULT | BEST_EFFORT / VOLATILE / KEEP_LAST
52 * 1 | RELIABLE / TRANSIENT_LOCAL / KEEP_LAST | RELIABLE / TRANSIENT_LOCAL / KEEP_ALL
53 *
54 * so `HISTORY == 1` meant KEEP_LAST to upstream and KEEP_ALL to us — the two
55 * opposite answers to the question. Liveliness was worse: MANUAL_BY_NODE and
56 * MANUAL_BY_TOPIC were SWAPPED (2 and 3).
57 *
58 * These values cross the ABI. `rmw_qos_profile_check_compatible` is a name
59 * upstream owns and we export, and the cyclonedds backend translates this
60 * struct into real DDS QoS that a ROS peer matches against. A caller reasoning
61 * in upstream's vocabulary got silently wrong policies. Same argument as W3.d
62 * step B for the return codes: where a value crosses the boundary, upstream's
63 * numbering is the only one that cannot be wrong.
64 *
65 * The names keep the `NROS_RMW_` prefix — as the return codes do — because the
66 * set is ours to extend, not upstream's to define.
67 */
68
70#define NROS_RMW_RELIABILITY_SYSTEM_DEFAULT 0
71#define NROS_RMW_RELIABILITY_RELIABLE 1
72#define NROS_RMW_RELIABILITY_BEST_EFFORT 2
75#define NROS_RMW_RELIABILITY_UNKNOWN 3
76
78#define NROS_RMW_DURABILITY_SYSTEM_DEFAULT 0
79#define NROS_RMW_DURABILITY_TRANSIENT_LOCAL 1
80#define NROS_RMW_DURABILITY_VOLATILE 2
81#define NROS_RMW_DURABILITY_UNKNOWN 3
82
84#define NROS_RMW_HISTORY_SYSTEM_DEFAULT 0
85#define NROS_RMW_HISTORY_KEEP_LAST 1
86#define NROS_RMW_HISTORY_KEEP_ALL 2
87#define NROS_RMW_HISTORY_UNKNOWN 3
88
96
98typedef int64_t rmw_time_point_value_t;
99
102#define RMW_MESSAGE_INFO_SEQUENCE_NUMBER_UNSUPPORTED UINT64_MAX
103
105#define RMW_GID_STORAGE_SIZE 24u
106
133typedef struct rmw_byte_span_t {
134 const uint8_t *data;
135 size_t len;
137
155typedef struct rmw_mut_byte_span_t {
156 uint8_t *data;
158 size_t capacity;
167 size_t len;
169
183#define NROS_RMW_TAKE_LEN_UNKNOWN 0
184
220
233
241
242
279
300
342typedef struct rmw_qos_profile_t {
343 /* ---- 8-byte core, layout-equivalent to the original subset ---- */
344 uint8_t reliability;
345 uint8_t durability;
346 uint8_t history;
348 uint16_t depth;
349 uint16_t _reserved0;
351 /* ---- 16-byte extension (Phase 109) ---- */
355 uint32_t deadline_ms;
356
359 uint32_t lifespan_ms;
360
364
372 uint8_t _reserved1[3];
374
375
376/* ====================================================================
377 * Phase 376 W4 — the two PURE functions.
378 *
379 * Plain exported C functions, deliberately NOT vtable slots, and the reason is
380 * the campaign's own rule read the other way round: a vtable slot is the
381 * mechanism for letting backends DIFFER, and these two must not. Both compute
382 * over types this header defines; if two backends disagreed about whether a QoS
383 * pair is compatible, or whether two gids name the same entity, that is a
384 * DEFECT with as many places to fix it as there are backends.
385 *
386 * Three supporting reasons:
387 *
388 * - The useful call sites have no vtable to dispatch through. QoS
389 * compatibility is wanted at `create_*` time (that is what produces
390 * `NROS_RMW_RET_INCOMPATIBLE_QOS`), in codegen'd validation, and in host
391 * tooling with no session. Neither function takes an entity, so a slot would
392 * force a caller to invent a session — and neither could be called BEFORE a
393 * backend registers, which is exactly when create-time validation runs.
394 *
395 * - Upstream is not evidence for a slot. `rmw_qos_profile_check_compatible`
396 * lives in `rmw/qos_profiles.h` and is defined by librmw ITSELF; it appears
397 * in the implementation contract only because each `librmw_*_cpp.so`
398 * statically links librmw and re-exports it. That is plugin packaging, not
399 * semantics, and we load no plugin.
400 *
401 * - Precedent: `nros_rmw_cffi_register_named` and friends are declared here
402 * and defined once in Rust with `#[no_mangle]`, so `nros-rmw-abi` stays a
403 * header-only INTERFACE target — no new compiled TU, no new link edge.
404 * (`static inline` was the alternative and is worse: bindgen does not emit
405 * it, so RFC-0054 would force a SECOND Rust implementation, which is the
406 * first reason again.)
407 * ==================================================================== */
408
426
437
447 rmw_qos_profile_t offered, rmw_qos_profile_t requested,
448 rmw_qos_compatibility_type_t *compatibility, uint32_t *clash_mask);
449
464 rmw_qos_profile_t publisher_profile, rmw_qos_profile_t subscription_profile,
465 rmw_qos_compatibility_type_t *compatibility, char *reason, size_t reason_size);
466
477 bool *result);
478
496
503
526 /* 24 bytes */
527
536
544
547#define RMW_INET_ADDRSTRLEN 48
548
562
569typedef bool (*rmw_network_flow_endpoint_visit_fn)(void *ctx,
570 const rmw_network_flow_endpoint_t *endpoint);
571
579typedef void (*rmw_content_filter_visit_fn)(void *ctx,
580 const char *expression, const char *const *parameters, size_t parameter_count);
581
585#define NROS_RMW_DURATION_INFINITE_MS UINT32_MAX
586
587/* ------------------------------------------------------------------ */
588/* Entity options — transport hints (phase-301, issue 0240) */
589/* ------------------------------------------------------------------ */
590
637 const char *key;
638 const char *value;
640
649#define RMW_SESSION_MAX_PROPERTIES 16
650
677
686
739
740/* ---- Standard QoS profile constants ---- */
741/*
742 * Compound-literal macros rather than `static const` objects, so a profile is
743 * usable in every TU that includes this header with no storage and no
744 * initialisation order.
745 *
746 * **ONE STATEMENT PER PROFILE (phase-428 W10).** Every profile below is a
747 * single line through `NROS_RMW_QOS_PROFILE_FROM_POLICIES`, which is the ONLY
748 * place the fields that never vary between profiles — `_reserved0`, the three
749 * durations, `avoid_ros_namespace_conventions`, `_reserved1` — are written.
750 * They used to be written out per profile: 26 constants in one file held in
751 * agreement by eye, and the four profiles carrying a concrete liveliness had
752 * all drifted the same way while their doc comments asserted the drifted value
753 * was upstream's.
754 *
755 * **The values are UPSTREAM's, and this file is a TRANSCRIPTION of them.** An
756 * embedded image cannot include `rmw/qos_profiles.h` and an offline build has
757 * no ROS install to read, so the numbers have to live here. That makes them
758 * exactly the kind of copy that drifts, so they are not maintained by hand
759 * alone: `scripts/check-qos-profile-ssot.py` binds every profile below to the
760 * Rust SSoT (`nros_rmw::QoSProfile`'s `QOS_PROFILE_*` constants) and, when a
761 * ROS install is resolvable, re-derives both against
762 * `<prefix>/include/rmw/rmw/qos_profiles.h`. Edit a value here without the
763 * gate agreeing and the gate is what tells you.
764 *
765 * That named `scripts/check-qos-profile-table.py` from 2026-09-05 to phase-454
766 * W1, and NO SUCH SCRIPT EXISTED for any of it. Two gates were written for W10
767 * and the duplicate was deleted — correctly, one parser of one table — but this
768 * prose kept the deleted name, so the transcription claiming loudest to be
769 * checked was the one checked by nothing. W1 wrote the coverage the sentence
770 * had been describing, into the gate that survived.
771 */
772
783#define NROS_RMW_QOS_PROFILE_FROM_POLICIES(rel, dur, hist, dep, live) \
784 ((rmw_qos_profile_t){ \
785 .reliability = NROS_RMW_RELIABILITY_##rel, \
786 .durability = NROS_RMW_DURABILITY_##dur, \
787 .history = NROS_RMW_HISTORY_##hist, \
788 .liveliness_kind = NROS_RMW_LIVELINESS_##live, \
789 .depth = (dep), \
790 ._reserved0 = 0, \
791 .deadline_ms = 0, \
792 .lifespan_ms = 0, \
793 .liveliness_lease_ms = 0, \
794 .avoid_ros_namespace_conventions = 0, \
795 ._reserved1 = {0, 0, 0}, \
796 })
797
798/* LIVELINESS IS THE SENTINEL IN EVERY CONCRETE PROFILE — phase-428 W10.
799 *
800 * `DEFAULT`, `SENSOR_DATA`, `SERVICES_DEFAULT` and `PARAMETERS` carried
801 * `NROS_RMW_LIVELINESS_AUTOMATIC` (1) until 2026-09-05, under doc comments
802 * reading "`rmw_qos_profile_default`-equivalent … automatic liveliness".
803 * Upstream's own initialisers say `RMW_QOS_POLICY_LIVELINESS_SYSTEM_DEFAULT`
804 * for all seven profiles, `rmw_qos_profile_unknown` excepted — there is no
805 * upstream profile that asks for AUTOMATIC. This is the F2 class: 0829 fixed
806 * `SYSTEM_DEFAULT`'s liveliness because that was the profile being looked at,
807 * and the four siblings carrying the same wrong value were not swept.
808 *
809 * THIS CHANGES WHAT A BACKEND COMPILES AGAINST, so what it does to the wire is
810 * stated rather than assumed. The two in-tree consumers of a changed macro are
811 * `nros-rmw-cyclonedds`'s `create_service` / `create_client`
812 * (`NROS_RMW_QOS_PROFILE_SERVICES_DEFAULT` when the caller passes NULL) and
813 * `nros-rmw-xrce`'s (same); the cyclone unit tests use `_DEFAULT`.
814 * - cyclonedds: `make_dds_qos` calls `dds_qset_liveliness` only when the kind
815 * is NOT the sentinel (`qos.cpp:99`), so AUTOMATIC(1) set
816 * `DDS_LIVELINESS_AUTOMATIC` + `DDS_INFINITY` explicitly and the sentinel
817 * omits the call — leaving Cyclone's own default, which the DDS spec fixes
818 * at AUTOMATIC with an infinite lease. Same offered QoS on the wire.
819 * - xrce: drops liveliness entirely (it lowers no liveliness field), so the
820 * value is unobservable there either way.
821 * - zenoh: reads no QoS field at all (phase-428 F1).
822 * A backend that starts honouring liveliness later sees the correct
823 * "middleware's choice" here rather than an unrequested AUTOMATIC.
824 */
825
827#define NROS_RMW_QOS_PROFILE_DEFAULT \
828 NROS_RMW_QOS_PROFILE_FROM_POLICIES(RELIABLE, VOLATILE, KEEP_LAST, 10, SYSTEM_DEFAULT)
829
831#define NROS_RMW_QOS_PROFILE_SENSOR_DATA \
832 NROS_RMW_QOS_PROFILE_FROM_POLICIES(BEST_EFFORT, VOLATILE, KEEP_LAST, 5, SYSTEM_DEFAULT)
833
841#define NROS_RMW_QOS_PROFILE_SERVICES_DEFAULT \
842 NROS_RMW_QOS_PROFILE_FROM_POLICIES(RELIABLE, VOLATILE, KEEP_LAST, 10, SYSTEM_DEFAULT)
843
845#define NROS_RMW_QOS_PROFILE_PARAMETERS \
846 NROS_RMW_QOS_PROFILE_FROM_POLICIES(RELIABLE, VOLATILE, KEEP_LAST, 1000, SYSTEM_DEFAULT)
847
855#define NROS_RMW_QOS_PROFILE_PARAMETER_EVENTS \
856 NROS_RMW_QOS_PROFILE_FROM_POLICIES(RELIABLE, VOLATILE, KEEP_LAST, 1000, SYSTEM_DEFAULT)
857
883#define NROS_RMW_QOS_PROFILE_SYSTEM_DEFAULT \
884 NROS_RMW_QOS_PROFILE_FROM_POLICIES(SYSTEM_DEFAULT, SYSTEM_DEFAULT, SYSTEM_DEFAULT, 0, \
885 SYSTEM_DEFAULT)
886
899#define NROS_RMW_QOS_PROFILE_UNKNOWN \
900 NROS_RMW_QOS_PROFILE_FROM_POLICIES(UNKNOWN, UNKNOWN, UNKNOWN, 0, UNKNOWN)
901
902/* ------------------------------------------------------------------ */
903/* Which QoS policies a backend honours (issue 1329) */
904/* ------------------------------------------------------------------ */
905
926#define NROS_RMW_QOS_POLICY_RELIABILITY (1u << 0)
927#define NROS_RMW_QOS_POLICY_DURABILITY_VOLATILE (1u << 1)
928#define NROS_RMW_QOS_POLICY_DURABILITY_TRANSIENT_LOCAL (1u << 2)
929#define NROS_RMW_QOS_POLICY_HISTORY (1u << 3)
930#define NROS_RMW_QOS_POLICY_DEPTH (1u << 4)
931#define NROS_RMW_QOS_POLICY_DEADLINE (1u << 5)
932#define NROS_RMW_QOS_POLICY_LIFESPAN (1u << 6)
933#define NROS_RMW_QOS_POLICY_LIVELINESS_AUTOMATIC (1u << 7)
934#define NROS_RMW_QOS_POLICY_LIVELINESS_MANUAL_BY_TOPIC (1u << 8)
935#define NROS_RMW_QOS_POLICY_LIVELINESS_MANUAL_BY_NODE (1u << 9)
936#define NROS_RMW_QOS_POLICY_LIVELINESS_LEASE (1u << 10)
937#define NROS_RMW_QOS_POLICY_AVOID_ROS_NAMESPACE_CONVENTIONS (1u << 11)
938
943#define NROS_RMW_QOS_POLICY_NONE 0u
944
951#define NROS_RMW_QOS_POLICY_CORE \
952 (NROS_RMW_QOS_POLICY_RELIABILITY | NROS_RMW_QOS_POLICY_DURABILITY_VOLATILE | \
953 NROS_RMW_QOS_POLICY_HISTORY | NROS_RMW_QOS_POLICY_DEPTH)
954
955/* ------------------------------------------------------------------ */
956/* Entity structs */
957/* ------------------------------------------------------------------ */
958
971typedef struct rmw_session_t {
973 const char *node_name;
975 const char *namespace_;
978 uint8_t _reserved[8];
982
1022typedef struct rmw_node_t {
1024 const char *name;
1026 const char *namespace_;
1033 uint8_t _reserved[8];
1036} rmw_node_t;
1037
1083
1104
1118typedef struct rmw_service_t {
1120 const char *service_name;
1123 const char *type_name;
1125 uint8_t _reserved[8];
1129
1133typedef struct rmw_client_t {
1135 const char *service_name;
1137 const char *type_name;
1139 uint8_t _reserved[8];
1142} rmw_client_t;
1143
1144#endif /* NROS_RMW_ENTITY_H */
nros_rmw_qos_clash_t
Definition rmw_entity.h:429
@ NROS_RMW_QOS_CLASH_DEADLINE
Definition rmw_entity.h:433
@ NROS_RMW_QOS_CLASH_LIVELINESS_KIND
Definition rmw_entity.h:434
@ NROS_RMW_QOS_CLASH_RELIABILITY
Definition rmw_entity.h:431
@ NROS_RMW_QOS_CLASH_DURABILITY
Definition rmw_entity.h:432
@ NROS_RMW_QOS_CLASH_NONE
Definition rmw_entity.h:430
@ NROS_RMW_QOS_CLASH_LIVELINESS_LEASE
Definition rmw_entity.h:435
rmw_ret_t rmw_compare_gids_equal(const rmw_gid_t *gid1, const rmw_gid_t *gid2, bool *result)
rmw_liveliness_kind_t
Definition rmw_entity.h:286
@ NROS_RMW_LIVELINESS_MANUAL_BY_TOPIC
Definition rmw_entity.h:296
@ NROS_RMW_LIVELINESS_UNKNOWN
Definition rmw_entity.h:298
@ NROS_RMW_LIVELINESS_SYSTEM_DEFAULT
Definition rmw_entity.h:290
@ NROS_RMW_LIVELINESS_MANUAL_BY_NODE
Definition rmw_entity.h:294
@ NROS_RMW_LIVELINESS_AUTOMATIC
Definition rmw_entity.h:292
rmw_transport_protocol_t
Definition rmw_entity.h:530
@ RMW_TRANSPORT_PROTOCOL_UNKNOWN
Definition rmw_entity.h:531
@ RMW_TRANSPORT_PROTOCOL_COUNT
Definition rmw_entity.h:534
@ RMW_TRANSPORT_PROTOCOL_TCP
Definition rmw_entity.h:533
@ RMW_TRANSPORT_PROTOCOL_UDP
Definition rmw_entity.h:532
rmw_endpoint_type_t
Definition rmw_entity.h:498
@ RMW_ENDPOINT_SUBSCRIPTION
Definition rmw_entity.h:501
@ RMW_ENDPOINT_INVALID
Definition rmw_entity.h:499
@ RMW_ENDPOINT_PUBLISHER
Definition rmw_entity.h:500
int64_t rmw_time_point_value_t
Definition rmw_entity.h:98
void(* rmw_content_filter_visit_fn)(void *ctx, const char *expression, const char *const *parameters, size_t parameter_count)
Definition rmw_entity.h:579
rmw_log_severity_t
Definition rmw_entity.h:488
@ RMW_LOG_SEVERITY_WARN
Definition rmw_entity.h:492
@ RMW_LOG_SEVERITY_ERROR
Definition rmw_entity.h:493
@ RMW_LOG_SEVERITY_INFO
Definition rmw_entity.h:491
@ RMW_LOG_SEVERITY_FATAL
Definition rmw_entity.h:494
@ RMW_LOG_SEVERITY_DEBUG
Definition rmw_entity.h:490
@ RMW_LOG_SEVERITY_UNSET
Definition rmw_entity.h:489
rmw_feature_t
Definition rmw_entity.h:92
@ RMW_FEATURE_MESSAGE_INFO_RECEPTION_SEQUENCE_NUMBER
Definition rmw_entity.h:94
@ RMW_FEATURE_MESSAGE_INFO_PUBLICATION_SEQUENCE_NUMBER
Definition rmw_entity.h:93
#define RMW_GID_STORAGE_SIZE
Definition rmw_entity.h:105
rmw_ret_t nros_rmw_qos_incompatibility_mask(rmw_qos_profile_t offered, rmw_qos_profile_t requested, rmw_qos_compatibility_type_t *compatibility, uint32_t *clash_mask)
rmw_ret_t rmw_qos_profile_check_compatible(rmw_qos_profile_t publisher_profile, rmw_qos_profile_t subscription_profile, rmw_qos_compatibility_type_t *compatibility, char *reason, size_t reason_size)
#define RMW_INET_ADDRSTRLEN
Definition rmw_entity.h:547
rmw_internet_protocol_t
Definition rmw_entity.h:538
@ RMW_INTERNET_PROTOCOL_COUNT
Definition rmw_entity.h:542
@ RMW_INTERNET_PROTOCOL_UNKNOWN
Definition rmw_entity.h:539
@ RMW_INTERNET_PROTOCOL_IPV6
Definition rmw_entity.h:541
@ RMW_INTERNET_PROTOCOL_IPV4
Definition rmw_entity.h:540
rmw_qos_compatibility_type_t
Definition rmw_entity.h:421
@ RMW_QOS_COMPATIBILITY_ERROR
Definition rmw_entity.h:424
@ RMW_QOS_COMPATIBILITY_WARNING
Definition rmw_entity.h:423
@ RMW_QOS_COMPATIBILITY_OK
Definition rmw_entity.h:422
bool(* rmw_network_flow_endpoint_visit_fn)(void *ctx, const rmw_network_flow_endpoint_t *endpoint)
Definition rmw_entity.h:569
Return-code constants for the nros RMW C vtable.
int32_t rmw_ret_t
Definition rmw_ret.h:72
Definition rmw_entity.h:133
size_t len
Definition rmw_entity.h:135
const uint8_t * data
Definition rmw_entity.h:134
Definition rmw_entity.h:1133
uint8_t _reserved[8]
Definition rmw_entity.h:1139
void * backend_data
Definition rmw_entity.h:1141
const char * service_name
Definition rmw_entity.h:1135
const char * type_name
Definition rmw_entity.h:1137
Definition rmw_entity.h:234
uint8_t data[24u]
Definition rmw_entity.h:239
const char * implementation_identifier
Definition rmw_entity.h:237
Definition rmw_entity.h:262
rmw_gid_t publisher_gid
Definition rmw_entity.h:274
uint64_t reception_sequence_number
Definition rmw_entity.h:272
rmw_time_point_value_t source_timestamp
Definition rmw_entity.h:264
bool from_intra_process
Definition rmw_entity.h:277
uint64_t publication_sequence_number
Definition rmw_entity.h:270
rmw_time_point_value_t received_timestamp
Definition rmw_entity.h:266
Definition rmw_entity.h:211
const char * type_name
Definition rmw_entity.h:215
const char * type_hash
Definition rmw_entity.h:218
Definition rmw_entity.h:155
uint8_t * data
Definition rmw_entity.h:156
size_t len
Definition rmw_entity.h:167
size_t capacity
Definition rmw_entity.h:158
Definition rmw_entity.h:552
uint8_t dscp
Definition rmw_entity.h:559
rmw_transport_protocol_t transport_protocol
Definition rmw_entity.h:553
rmw_internet_protocol_t internet_protocol
Definition rmw_entity.h:554
char internet_address[48]
Definition rmw_entity.h:560
uint16_t transport_port
Definition rmw_entity.h:555
uint32_t flow_label
Definition rmw_entity.h:557
Definition rmw_entity.h:1022
uint8_t _reserved[8]
Definition rmw_entity.h:1033
const char * namespace_
Definition rmw_entity.h:1026
rmw_session_t * session
Definition rmw_entity.h:1031
const char * name
Definition rmw_entity.h:1024
void * backend_data
Definition rmw_entity.h:1035
Definition rmw_entity.h:678
uint8_t _reserved[7]
Definition rmw_entity.h:684
uint8_t tx_express
Definition rmw_entity.h:683
Definition rmw_entity.h:1066
const char * type_name
Definition rmw_entity.h:1071
uint8_t _reserved[7]
Definition rmw_entity.h:1079
bool can_loan_messages
Definition rmw_entity.h:1077
const char * topic_name
Definition rmw_entity.h:1068
void * backend_data
Definition rmw_entity.h:1081
rmw_qos_profile_t qos
Definition rmw_entity.h:1073
Definition rmw_entity.h:342
uint8_t avoid_ros_namespace_conventions
Definition rmw_entity.h:371
uint8_t reliability
Definition rmw_entity.h:344
uint8_t durability
Definition rmw_entity.h:345
uint16_t depth
Definition rmw_entity.h:348
uint32_t lifespan_ms
Definition rmw_entity.h:359
uint8_t _reserved1[3]
Definition rmw_entity.h:372
uint8_t liveliness_kind
Definition rmw_entity.h:347
uint16_t _reserved0
Definition rmw_entity.h:349
uint32_t deadline_ms
Definition rmw_entity.h:355
uint8_t history
Definition rmw_entity.h:346
uint32_t liveliness_lease_ms
Definition rmw_entity.h:363
Definition rmw_entity.h:1118
uint8_t _reserved[8]
Definition rmw_entity.h:1125
void * backend_data
Definition rmw_entity.h:1127
const char * service_name
Definition rmw_entity.h:1120
const char * type_name
Definition rmw_entity.h:1123
Definition rmw_entity.h:227
const char * type_name
Definition rmw_entity.h:229
const char * type_hash
Definition rmw_entity.h:231
Definition rmw_entity.h:651
uint8_t _reserved[7]
Definition rmw_entity.h:658
size_t property_count
Definition rmw_entity.h:675
uint8_t localhost_only
Definition rmw_entity.h:657
const char * enclave
Definition rmw_entity.h:667
const rmw_session_property_t * properties
Definition rmw_entity.h:674
Definition rmw_entity.h:636
const char * value
Definition rmw_entity.h:638
const char * key
Definition rmw_entity.h:637
Definition rmw_entity.h:971
const char * node_name
Definition rmw_entity.h:973
const char * namespace_
Definition rmw_entity.h:975
void * backend_data
Definition rmw_entity.h:980
uint8_t _reserved[8]
Definition rmw_entity.h:978
Definition rmw_entity.h:692
uint8_t _reserved[4]
Definition rmw_entity.h:737
uint32_t rx_buffer_hint
Definition rmw_entity.h:736
Definition rmw_entity.h:1088
uint8_t _reserved[7]
Definition rmw_entity.h:1100
void * backend_data
Definition rmw_entity.h:1102
bool can_loan_messages
Definition rmw_entity.h:1098
const char * type_name
Definition rmw_entity.h:1092
const char * topic_name
Definition rmw_entity.h:1090
rmw_qos_profile_t qos
Definition rmw_entity.h:1094
Definition rmw_entity.h:509
const char * node_name
Definition rmw_entity.h:511
rmw_endpoint_type_t endpoint_type
Definition rmw_entity.h:517
rmw_gid_t endpoint_gid
Definition rmw_entity.h:519
rmw_qos_profile_t qos_profile
Definition rmw_entity.h:524
const char * topic_type
Definition rmw_entity.h:515
const char * node_namespace
Definition rmw_entity.h:513