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
38
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
81#define NROS_RMW_RELIABILITY_BEST_AVAILABLE 4
82
84#define NROS_RMW_DURABILITY_SYSTEM_DEFAULT 0
85#define NROS_RMW_DURABILITY_TRANSIENT_LOCAL 1
86#define NROS_RMW_DURABILITY_VOLATILE 2
87#define NROS_RMW_DURABILITY_UNKNOWN 3
90#define NROS_RMW_DURABILITY_BEST_AVAILABLE 4
91
93#define NROS_RMW_HISTORY_SYSTEM_DEFAULT 0
94#define NROS_RMW_HISTORY_KEEP_LAST 1
95#define NROS_RMW_HISTORY_KEEP_ALL 2
96#define NROS_RMW_HISTORY_UNKNOWN 3
97
105
108
111#define RMW_MESSAGE_INFO_SEQUENCE_NUMBER_UNSUPPORTED UINT64_MAX
112
114#define RMW_GID_STORAGE_SIZE 24u
115
142typedef struct rmw_byte_span_t {
143 const uint8_t *data;
144 size_t len;
146
164typedef struct rmw_mut_byte_span_t {
165 uint8_t *data;
167 size_t capacity;
176 size_t len;
178
192#define NROS_RMW_TAKE_LEN_UNKNOWN 0
193
212#define NROS_RMW_SEQUENCE_ID_UNKNOWN (-9223372036854775807LL - 1)
213
249
262
270
271
308
313#define RMW_REQUEST_ID_WRITER_GUID_SIZE 16u
314
315/* Issue 2081 — the API headers (`<rclc/detail/request_id.h>`, rclcpp's
316 * `service.hpp`) declare the SAME struct for a service callback, under the same
317 * guard, so a translation unit that reaches two of them sees one definition. */
318#ifndef NROS_RMW_REQUEST_ID_T_DEFINED
319#define NROS_RMW_REQUEST_ID_T_DEFINED
327typedef struct rmw_request_id_t {
329 int8_t writer_guid[16];
333#endif
334
355
379
421typedef struct rmw_qos_profile_t {
422 /* ---- 8-byte core, layout-equivalent to the original subset ---- */
423 uint8_t reliability;
424 uint8_t durability;
425 uint8_t history;
427 uint16_t depth;
428 uint16_t _reserved0;
429
430 /* ---- 16-byte extension (Phase 109) ---- */
434 uint32_t deadline_ms;
435
438 uint32_t lifespan_ms;
439
443
451 uint8_t _reserved1[3];
453
454
455/* ====================================================================
456 * Phase 376 W4 — the two PURE functions.
457 *
458 * Plain exported C functions, deliberately NOT vtable slots, and the reason is
459 * the campaign's own rule read the other way round: a vtable slot is the
460 * mechanism for letting backends DIFFER, and these two must not. Both compute
461 * over types this header defines; if two backends disagreed about whether a QoS
462 * pair is compatible, or whether two gids name the same entity, that is a
463 * DEFECT with as many places to fix it as there are backends.
464 *
465 * Three supporting reasons:
466 *
467 * - The useful call sites have no vtable to dispatch through. QoS
468 * compatibility is wanted at `create_*` time (that is what produces
469 * `NROS_RMW_RET_INCOMPATIBLE_QOS`), in codegen'd validation, and in host
470 * tooling with no session. Neither function takes an entity, so a slot would
471 * force a caller to invent a session — and neither could be called BEFORE a
472 * backend registers, which is exactly when create-time validation runs.
473 *
474 * - Upstream is not evidence for a slot. `rmw_qos_profile_check_compatible`
475 * lives in `rmw/qos_profiles.h` and is defined by librmw ITSELF; it appears
476 * in the implementation contract only because each `librmw_*_cpp.so`
477 * statically links librmw and re-exports it. That is plugin packaging, not
478 * semantics, and we load no plugin.
479 *
480 * - Precedent: `nros_rmw_cffi_register_named` and friends are declared here
481 * and defined once in Rust with `#[no_mangle]`, so `nros-rmw-abi` stays a
482 * header-only INTERFACE target — no new compiled TU, no new link edge.
483 * (`static inline` was the alternative and is worse: bindgen does not emit
484 * it, so RFC-0054 would force a SECOND Rust implementation, which is the
485 * first reason again.)
486 * ==================================================================== */
487
505
516
526 rmw_qos_profile_t offered, rmw_qos_profile_t requested,
527 rmw_qos_compatibility_type_t *compatibility, uint32_t *clash_mask);
528
543 rmw_qos_profile_t publisher_profile, rmw_qos_profile_t subscription_profile,
544 rmw_qos_compatibility_type_t *compatibility, char *reason, size_t reason_size);
545
556 bool *result);
557
575
582
605 /* 24 bytes */
606
615
623
626#define RMW_INET_ADDRSTRLEN 48
627
641
648typedef bool (*rmw_network_flow_endpoint_visit_fn)(void *ctx,
649 const rmw_network_flow_endpoint_t *endpoint);
650
658typedef void (*rmw_content_filter_visit_fn)(void *ctx,
659 const char *expression, const char *const *parameters, size_t parameter_count);
660
664#define NROS_RMW_DURATION_INFINITE_MS UINT32_MAX
665
673#define NROS_RMW_DURATION_BEST_AVAILABLE_MS (UINT32_MAX - 1u)
674
675/* ------------------------------------------------------------------ */
676/* Entity options — transport hints (phase-301, issue 0240) */
677/* ------------------------------------------------------------------ */
678
725 const char *key;
726 const char *value;
728
737#define RMW_SESSION_MAX_PROPERTIES 16
738
765
774
849
850/* ---- Standard QoS profile constants ---- */
851/*
852 * Compound-literal macros rather than `static const` objects, so a profile is
853 * usable in every TU that includes this header with no storage and no
854 * initialisation order.
855 *
856 * **ONE STATEMENT PER PROFILE (phase-428 W10).** Every profile below is a
857 * single line through `NROS_RMW_QOS_PROFILE_FROM_POLICIES`, which is the ONLY
858 * place the fields that never vary between profiles — `_reserved0`, the three
859 * durations, `avoid_ros_namespace_conventions`, `_reserved1` — are written.
860 * They used to be written out per profile: 26 constants in one file held in
861 * agreement by eye, and the four profiles carrying a concrete liveliness had
862 * all drifted the same way while their doc comments asserted the drifted value
863 * was upstream's.
864 *
865 * **The values are UPSTREAM's, and this file is a TRANSCRIPTION of them.** An
866 * embedded image cannot include `rmw/qos_profiles.h` and an offline build has
867 * no ROS install to read, so the numbers have to live here. That makes them
868 * exactly the kind of copy that drifts, so they are not maintained by hand
869 * alone: `scripts/check-qos-profile-ssot.py` binds every profile below to the
870 * Rust SSoT (`nros_rmw::QoSProfile`'s `QOS_PROFILE_*` constants) and, when a
871 * ROS install is resolvable, re-derives both against
872 * `<prefix>/include/rmw/rmw/qos_profiles.h`. Edit a value here without the
873 * gate agreeing and the gate is what tells you.
874 *
875 * That named `scripts/check-qos-profile-table.py` from 2026-09-05 to phase-454
876 * W1, and NO SUCH SCRIPT EXISTED for any of it. Two gates were written for W10
877 * and the duplicate was deleted — correctly, one parser of one table — but this
878 * prose kept the deleted name, so the transcription claiming loudest to be
879 * checked was the one checked by nothing. W1 wrote the coverage the sentence
880 * had been describing, into the gate that survived.
881 */
882
893#define NROS_RMW_QOS_PROFILE_FROM_POLICIES(rel, dur, hist, dep, live) \
894 ((rmw_qos_profile_t){ \
895 .reliability = NROS_RMW_RELIABILITY_##rel, \
896 .durability = NROS_RMW_DURABILITY_##dur, \
897 .history = NROS_RMW_HISTORY_##hist, \
898 .liveliness_kind = NROS_RMW_LIVELINESS_##live, \
899 .depth = (dep), \
900 ._reserved0 = 0, \
901 .deadline_ms = 0, \
902 .lifespan_ms = 0, \
903 .liveliness_lease_ms = 0, \
904 .avoid_ros_namespace_conventions = 0, \
905 ._reserved1 = {0, 0, 0}, \
906 })
907
908/* LIVELINESS IS THE SENTINEL IN EVERY CONCRETE PROFILE — phase-428 W10.
909 *
910 * `DEFAULT`, `SENSOR_DATA`, `SERVICES_DEFAULT` and `PARAMETERS` carried
911 * `NROS_RMW_LIVELINESS_AUTOMATIC` (1) until 2026-09-05, under doc comments
912 * reading "`rmw_qos_profile_default`-equivalent … automatic liveliness".
913 * Upstream's own initialisers say `RMW_QOS_POLICY_LIVELINESS_SYSTEM_DEFAULT`
914 * for all seven profiles, `rmw_qos_profile_unknown` excepted — there is no
915 * upstream profile that asks for AUTOMATIC. This is the F2 class: 0829 fixed
916 * `SYSTEM_DEFAULT`'s liveliness because that was the profile being looked at,
917 * and the four siblings carrying the same wrong value were not swept.
918 *
919 * THIS CHANGES WHAT A BACKEND COMPILES AGAINST, so what it does to the wire is
920 * stated rather than assumed. The two in-tree consumers of a changed macro are
921 * `nros-rmw-cyclonedds`'s `create_service` / `create_client`
922 * (`NROS_RMW_QOS_PROFILE_SERVICES_DEFAULT` when the caller passes NULL) and
923 * `nros-rmw-xrce`'s (same); the cyclone unit tests use `_DEFAULT`.
924 * - cyclonedds: `make_dds_qos` calls `dds_qset_liveliness` only when the kind
925 * is NOT the sentinel (`qos.cpp:99`), so AUTOMATIC(1) set
926 * `DDS_LIVELINESS_AUTOMATIC` + `DDS_INFINITY` explicitly and the sentinel
927 * omits the call — leaving Cyclone's own default, which the DDS spec fixes
928 * at AUTOMATIC with an infinite lease. Same offered QoS on the wire.
929 * - xrce: drops liveliness entirely (it lowers no liveliness field), so the
930 * value is unobservable there either way.
931 * - zenoh: reads no QoS field at all (phase-428 F1).
932 * A backend that starts honouring liveliness later sees the correct
933 * "middleware's choice" here rather than an unrequested AUTOMATIC.
934 */
935
937#define NROS_RMW_QOS_PROFILE_DEFAULT \
938 NROS_RMW_QOS_PROFILE_FROM_POLICIES(RELIABLE, VOLATILE, KEEP_LAST, 10, SYSTEM_DEFAULT)
939
941#define NROS_RMW_QOS_PROFILE_SENSOR_DATA \
942 NROS_RMW_QOS_PROFILE_FROM_POLICIES(BEST_EFFORT, VOLATILE, KEEP_LAST, 5, SYSTEM_DEFAULT)
943
951#define NROS_RMW_QOS_PROFILE_SERVICES_DEFAULT \
952 NROS_RMW_QOS_PROFILE_FROM_POLICIES(RELIABLE, VOLATILE, KEEP_LAST, 10, SYSTEM_DEFAULT)
953
955#define NROS_RMW_QOS_PROFILE_PARAMETERS \
956 NROS_RMW_QOS_PROFILE_FROM_POLICIES(RELIABLE, VOLATILE, KEEP_LAST, 1000, SYSTEM_DEFAULT)
957
965#define NROS_RMW_QOS_PROFILE_PARAMETER_EVENTS \
966 NROS_RMW_QOS_PROFILE_FROM_POLICIES(RELIABLE, VOLATILE, KEEP_LAST, 1000, SYSTEM_DEFAULT)
967
993#define NROS_RMW_QOS_PROFILE_SYSTEM_DEFAULT \
994 NROS_RMW_QOS_PROFILE_FROM_POLICIES(SYSTEM_DEFAULT, SYSTEM_DEFAULT, SYSTEM_DEFAULT, 0, \
995 SYSTEM_DEFAULT)
996
1009#define NROS_RMW_QOS_PROFILE_UNKNOWN \
1010 NROS_RMW_QOS_PROFILE_FROM_POLICIES(UNKNOWN, UNKNOWN, UNKNOWN, 0, UNKNOWN)
1011
1012/* ------------------------------------------------------------------ */
1013/* Which QoS policies a backend honours (issue 1329) */
1014/* ------------------------------------------------------------------ */
1015
1036#define NROS_RMW_QOS_POLICY_RELIABILITY (1u << 0)
1037#define NROS_RMW_QOS_POLICY_DURABILITY_VOLATILE (1u << 1)
1038#define NROS_RMW_QOS_POLICY_DURABILITY_TRANSIENT_LOCAL (1u << 2)
1039#define NROS_RMW_QOS_POLICY_HISTORY (1u << 3)
1040#define NROS_RMW_QOS_POLICY_DEPTH (1u << 4)
1041#define NROS_RMW_QOS_POLICY_DEADLINE (1u << 5)
1042#define NROS_RMW_QOS_POLICY_LIFESPAN (1u << 6)
1043#define NROS_RMW_QOS_POLICY_LIVELINESS_AUTOMATIC (1u << 7)
1044#define NROS_RMW_QOS_POLICY_LIVELINESS_MANUAL_BY_TOPIC (1u << 8)
1045#define NROS_RMW_QOS_POLICY_LIVELINESS_MANUAL_BY_NODE (1u << 9)
1046#define NROS_RMW_QOS_POLICY_LIVELINESS_LEASE (1u << 10)
1047#define NROS_RMW_QOS_POLICY_AVOID_ROS_NAMESPACE_CONVENTIONS (1u << 11)
1048
1053#define NROS_RMW_QOS_POLICY_NONE 0u
1054
1061#define NROS_RMW_QOS_POLICY_CORE \
1062 (NROS_RMW_QOS_POLICY_RELIABILITY | NROS_RMW_QOS_POLICY_DURABILITY_VOLATILE | \
1063 NROS_RMW_QOS_POLICY_HISTORY | NROS_RMW_QOS_POLICY_DEPTH)
1064
1065/* ------------------------------------------------------------------ */
1066/* Entity structs */
1067/* ------------------------------------------------------------------ */
1068
1081typedef struct rmw_session_t {
1083 const char *node_name;
1085 const char *namespace_;
1088 uint8_t _reserved[8];
1092
1132typedef struct rmw_node_t {
1134 const char *name;
1136 const char *namespace_;
1143 uint8_t _reserved[8];
1146} rmw_node_t;
1147
1193
1214
1228typedef struct rmw_service_t {
1230 const char *service_name;
1233 const char *type_name;
1235 uint8_t _reserved[8];
1239
1243typedef struct rmw_client_t {
1245 const char *service_name;
1247 const char *type_name;
1249 uint8_t _reserved[8];
1252} rmw_client_t;
1253
1254#endif /* NROS_RMW_ENTITY_H */
nros_rmw_qos_clash_t
Definition rmw_entity.h:508
@ NROS_RMW_QOS_CLASH_DEADLINE
Definition rmw_entity.h:512
@ NROS_RMW_QOS_CLASH_LIVELINESS_KIND
Definition rmw_entity.h:513
@ NROS_RMW_QOS_CLASH_RELIABILITY
Definition rmw_entity.h:510
@ NROS_RMW_QOS_CLASH_DURABILITY
Definition rmw_entity.h:511
@ NROS_RMW_QOS_CLASH_NONE
Definition rmw_entity.h:509
@ NROS_RMW_QOS_CLASH_LIVELINESS_LEASE
Definition rmw_entity.h:514
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:362
@ NROS_RMW_LIVELINESS_BEST_AVAILABLE
Definition rmw_entity.h:377
@ NROS_RMW_LIVELINESS_MANUAL_BY_TOPIC
Definition rmw_entity.h:372
@ NROS_RMW_LIVELINESS_UNKNOWN
Definition rmw_entity.h:374
@ NROS_RMW_LIVELINESS_SYSTEM_DEFAULT
Definition rmw_entity.h:366
@ NROS_RMW_LIVELINESS_MANUAL_BY_NODE
Definition rmw_entity.h:370
@ NROS_RMW_LIVELINESS_AUTOMATIC
Definition rmw_entity.h:368
rmw_transport_protocol_t
Definition rmw_entity.h:609
@ RMW_TRANSPORT_PROTOCOL_UNKNOWN
Definition rmw_entity.h:610
@ RMW_TRANSPORT_PROTOCOL_COUNT
Definition rmw_entity.h:613
@ RMW_TRANSPORT_PROTOCOL_TCP
Definition rmw_entity.h:612
@ RMW_TRANSPORT_PROTOCOL_UDP
Definition rmw_entity.h:611
rmw_endpoint_type_t
Definition rmw_entity.h:577
@ RMW_ENDPOINT_SUBSCRIPTION
Definition rmw_entity.h:580
@ RMW_ENDPOINT_INVALID
Definition rmw_entity.h:578
@ RMW_ENDPOINT_PUBLISHER
Definition rmw_entity.h:579
int64_t rmw_time_point_value_t
Definition rmw_entity.h:107
void(* rmw_content_filter_visit_fn)(void *ctx, const char *expression, const char *const *parameters, size_t parameter_count)
Definition rmw_entity.h:658
rmw_log_severity_t
Definition rmw_entity.h:567
@ RMW_LOG_SEVERITY_WARN
Definition rmw_entity.h:571
@ RMW_LOG_SEVERITY_ERROR
Definition rmw_entity.h:572
@ RMW_LOG_SEVERITY_INFO
Definition rmw_entity.h:570
@ RMW_LOG_SEVERITY_FATAL
Definition rmw_entity.h:573
@ RMW_LOG_SEVERITY_DEBUG
Definition rmw_entity.h:569
@ RMW_LOG_SEVERITY_UNSET
Definition rmw_entity.h:568
rmw_feature_t
Definition rmw_entity.h:101
@ RMW_FEATURE_MESSAGE_INFO_RECEPTION_SEQUENCE_NUMBER
Definition rmw_entity.h:103
@ RMW_FEATURE_MESSAGE_INFO_PUBLICATION_SEQUENCE_NUMBER
Definition rmw_entity.h:102
#define RMW_GID_STORAGE_SIZE
Definition rmw_entity.h:114
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:626
rmw_internet_protocol_t
Definition rmw_entity.h:617
@ RMW_INTERNET_PROTOCOL_COUNT
Definition rmw_entity.h:621
@ RMW_INTERNET_PROTOCOL_UNKNOWN
Definition rmw_entity.h:618
@ RMW_INTERNET_PROTOCOL_IPV6
Definition rmw_entity.h:620
@ RMW_INTERNET_PROTOCOL_IPV4
Definition rmw_entity.h:619
rmw_qos_compatibility_type_t
Definition rmw_entity.h:500
@ RMW_QOS_COMPATIBILITY_ERROR
Definition rmw_entity.h:503
@ RMW_QOS_COMPATIBILITY_WARNING
Definition rmw_entity.h:502
@ RMW_QOS_COMPATIBILITY_OK
Definition rmw_entity.h:501
bool(* rmw_network_flow_endpoint_visit_fn)(void *ctx, const rmw_network_flow_endpoint_t *endpoint)
Definition rmw_entity.h:648
Return-code constants for the nros RMW C vtable.
int32_t rmw_ret_t
Definition rmw_ret.h:72
Definition rmw_entity.h:142
size_t len
Definition rmw_entity.h:144
const uint8_t * data
Definition rmw_entity.h:143
Definition rmw_entity.h:1243
uint8_t _reserved[8]
Definition rmw_entity.h:1249
void * backend_data
Definition rmw_entity.h:1251
const char * service_name
Definition rmw_entity.h:1245
const char * type_name
Definition rmw_entity.h:1247
Definition rmw_entity.h:263
uint8_t data[24u]
Definition rmw_entity.h:268
const char * implementation_identifier
Definition rmw_entity.h:266
Definition rmw_entity.h:291
rmw_gid_t publisher_gid
Definition rmw_entity.h:303
uint64_t reception_sequence_number
Definition rmw_entity.h:301
rmw_time_point_value_t source_timestamp
Definition rmw_entity.h:293
bool from_intra_process
Definition rmw_entity.h:306
uint64_t publication_sequence_number
Definition rmw_entity.h:299
rmw_time_point_value_t received_timestamp
Definition rmw_entity.h:295
Definition rmw_entity.h:240
const char * type_name
Definition rmw_entity.h:244
const char * type_hash
Definition rmw_entity.h:247
Definition rmw_entity.h:164
uint8_t * data
Definition rmw_entity.h:165
size_t len
Definition rmw_entity.h:176
size_t capacity
Definition rmw_entity.h:167
Definition rmw_entity.h:631
uint8_t dscp
Definition rmw_entity.h:638
rmw_transport_protocol_t transport_protocol
Definition rmw_entity.h:632
rmw_internet_protocol_t internet_protocol
Definition rmw_entity.h:633
char internet_address[48]
Definition rmw_entity.h:639
uint16_t transport_port
Definition rmw_entity.h:634
uint32_t flow_label
Definition rmw_entity.h:636
Definition rmw_entity.h:1132
uint8_t _reserved[8]
Definition rmw_entity.h:1143
const char * namespace_
Definition rmw_entity.h:1136
rmw_session_t * session
Definition rmw_entity.h:1141
const char * name
Definition rmw_entity.h:1134
void * backend_data
Definition rmw_entity.h:1145
Definition rmw_entity.h:766
uint8_t _reserved[7]
Definition rmw_entity.h:772
uint8_t tx_express
Definition rmw_entity.h:771
Definition rmw_entity.h:1176
const char * type_name
Definition rmw_entity.h:1181
uint8_t _reserved[7]
Definition rmw_entity.h:1189
bool can_loan_messages
Definition rmw_entity.h:1187
const char * topic_name
Definition rmw_entity.h:1178
void * backend_data
Definition rmw_entity.h:1191
rmw_qos_profile_t qos
Definition rmw_entity.h:1183
Definition rmw_entity.h:421
uint8_t avoid_ros_namespace_conventions
Definition rmw_entity.h:450
uint8_t reliability
Definition rmw_entity.h:423
uint8_t durability
Definition rmw_entity.h:424
uint16_t depth
Definition rmw_entity.h:427
uint32_t lifespan_ms
Definition rmw_entity.h:438
uint8_t _reserved1[3]
Definition rmw_entity.h:451
uint8_t liveliness_kind
Definition rmw_entity.h:426
uint16_t _reserved0
Definition rmw_entity.h:428
uint32_t deadline_ms
Definition rmw_entity.h:434
uint8_t history
Definition rmw_entity.h:425
uint32_t liveliness_lease_ms
Definition rmw_entity.h:442
Definition rmw_entity.h:327
int8_t writer_guid[16]
Definition rmw_entity.h:329
int64_t sequence_number
Definition rmw_entity.h:331
Definition rmw_entity.h:347
rmw_time_point_value_t received_timestamp
Definition rmw_entity.h:351
rmw_request_id_t request_id
Definition rmw_entity.h:353
rmw_time_point_value_t source_timestamp
Definition rmw_entity.h:349
Definition rmw_entity.h:1228
uint8_t _reserved[8]
Definition rmw_entity.h:1235
void * backend_data
Definition rmw_entity.h:1237
const char * service_name
Definition rmw_entity.h:1230
const char * type_name
Definition rmw_entity.h:1233
Definition rmw_entity.h:256
const char * type_name
Definition rmw_entity.h:258
const char * type_hash
Definition rmw_entity.h:260
Definition rmw_entity.h:739
uint8_t _reserved[7]
Definition rmw_entity.h:746
size_t property_count
Definition rmw_entity.h:763
uint8_t localhost_only
Definition rmw_entity.h:745
const char * enclave
Definition rmw_entity.h:755
const rmw_session_property_t * properties
Definition rmw_entity.h:762
Definition rmw_entity.h:724
const char * value
Definition rmw_entity.h:726
const char * key
Definition rmw_entity.h:725
Definition rmw_entity.h:1081
const char * node_name
Definition rmw_entity.h:1083
const char * namespace_
Definition rmw_entity.h:1085
void * backend_data
Definition rmw_entity.h:1090
uint8_t _reserved[8]
Definition rmw_entity.h:1088
Definition rmw_entity.h:780
uint32_t rx_buffer_hint
Definition rmw_entity.h:825
uint32_t arrival_rate_mhz
Definition rmw_entity.h:847
Definition rmw_entity.h:1198
uint8_t _reserved[7]
Definition rmw_entity.h:1210
void * backend_data
Definition rmw_entity.h:1212
bool can_loan_messages
Definition rmw_entity.h:1208
const char * type_name
Definition rmw_entity.h:1202
const char * topic_name
Definition rmw_entity.h:1200
rmw_qos_profile_t qos
Definition rmw_entity.h:1204
Definition rmw_entity.h:588
const char * node_name
Definition rmw_entity.h:590
rmw_endpoint_type_t endpoint_type
Definition rmw_entity.h:596
rmw_gid_t endpoint_gid
Definition rmw_entity.h:598
rmw_qos_profile_t qos_profile
Definition rmw_entity.h:603
const char * topic_type
Definition rmw_entity.h:594
const char * node_namespace
Definition rmw_entity.h:592