1#ifndef NROS_RMW_VTABLE_H
2#define NROS_RMW_VTABLE_H
51 uint32_t domain_id,
const char *node_name,
61 const char *topic_name,
const char *type_name,
const char *type_hash,
66 const uint8_t *data,
size_t len);
70 const char *topic_name,
const char *type_name,
const char *type_hash,
75 uint8_t *buf,
size_t buf_len);
82 const char *service_name,
const char *type_name,
const char *type_hash,
87 uint8_t *buf,
size_t buf_len, int64_t *seq_out);
90 int64_t seq,
const uint8_t *data,
size_t len);
94 const char *service_name,
const char *type_name,
const char *type_hash,
99 const uint8_t *request,
size_t req_len,
100 uint8_t *reply_buf,
size_t reply_buf_len);
113 const uint8_t *request,
size_t req_len);
124 uint8_t *reply_buf,
size_t reply_buf_len);
136 uint32_t deadline_ms,
146 uint32_t deadline_ms,
192 void (*cb)(
void *ctx),
213 size_t requested_len,
253 const uint8_t **out_buf,
350 void (*size_cb)(
size_t *out_total_len,
void *user_ctx),
351 void (*chunk_cb)(uint8_t *out_buf,
size_t cap,
352 size_t *out_written,
void *user_ctx),
401 void (*cb)(
void *ctx,
const uint8_t *ptr,
size_t len));
488#if (defined(__GNUC__) || defined(__clang__)) && !defined(__ZEPHYR__) && \
489 !defined(__NuttX__) && !defined(ESP_PLATFORM) && !defined(__VXWORKS__)
490#define NROS_RMW_REGISTER_BACKEND(REGISTER_FN) \
491 __attribute__((constructor)) static void nros_rmw_ctor_##REGISTER_FN( \
493 (void) REGISTER_FN(); \
497#define NROS_RMW_REGISTER_BACKEND(REGISTER_FN)
Typed entity structs for the nros RMW C surface.
Tier-1 status events: liveliness changes, deadline misses, message loss.
nros_rmw_event_kind_t
Definition rmw_event.h:36
void(* nros_rmw_event_callback_t)(nros_rmw_event_kind_t kind, const nros_rmw_event_payload_t *payload, void *user_context)
Definition rmw_event.h:86
Return-code constants for the nros RMW C vtable.
int32_t nros_rmw_ret_t
Definition rmw_ret.h:34
size_t nros_rmw_cffi_registered_names(const char **buf, size_t cap)
const nros_rmw_vtable_t * nros_rmw_cffi_lookup(const char *name)
nros_rmw_ret_t nros_rmw_cffi_register_named(const char *name, const nros_rmw_vtable_t *vtable)
nros_rmw_ret_t nros_rmw_cffi_register(const nros_rmw_vtable_t *vtable)
size_t nros_rmw_cffi_walk_init_section(void)
Definition rmw_entity.h:234
Definition rmw_entity.h:88
Definition rmw_entity.h:297
Definition rmw_entity.h:282
Definition rmw_entity.h:207
Definition rmw_entity.h:254
Definition rmw_vtable.h:44
nros_rmw_ret_t(* create_subscriber)(nros_rmw_session_t *session, const char *topic_name, const char *type_name, const char *type_hash, uint32_t domain_id, const nros_rmw_qos_t *qos, nros_rmw_subscriber_t *out)
Definition rmw_vtable.h:69
void(* destroy_publisher)(nros_rmw_publisher_t *publisher)
Definition rmw_vtable.h:64
nros_rmw_ret_t(* create_service_server)(nros_rmw_session_t *session, const char *service_name, const char *type_name, const char *type_hash, uint32_t domain_id, const nros_rmw_qos_t *qos, nros_rmw_service_server_t *out)
Definition rmw_vtable.h:81
int32_t(* subscriber_supports_in_place)(nros_rmw_subscriber_t *subscriber)
Definition rmw_vtable.h:389
void(* destroy_service_server)(nros_rmw_service_server_t *server)
Definition rmw_vtable.h:85
nros_rmw_ret_t(* send_reply)(nros_rmw_service_server_t *server, int64_t seq, const uint8_t *data, size_t len)
Definition rmw_vtable.h:89
int32_t(* service_server_available)(nros_rmw_service_client_t *client)
Definition rmw_vtable.h:286
int32_t(* try_recv_sequence)(nros_rmw_subscriber_t *subscriber, uint8_t *buf, size_t per_msg_cap, size_t max_msgs, size_t *out_lens)
Definition rmw_vtable.h:312
int32_t(* try_recv_request)(nros_rmw_service_server_t *server, uint8_t *buf, size_t buf_len, int64_t *seq_out)
Definition rmw_vtable.h:86
nros_rmw_ret_t(* assert_publisher_liveliness)(nros_rmw_publisher_t *publisher)
Definition rmw_vtable.h:156
nros_rmw_ret_t(* register_publisher_event)(nros_rmw_publisher_t *publisher, nros_rmw_event_kind_t kind, uint32_t deadline_ms, nros_rmw_event_callback_t cb, void *user_context)
Definition rmw_vtable.h:143
nros_rmw_ret_t(* register_subscriber_event)(nros_rmw_subscriber_t *subscriber, nros_rmw_event_kind_t kind, uint32_t deadline_ms, nros_rmw_event_callback_t cb, void *user_context)
Definition rmw_vtable.h:133
int32_t(* has_request)(nros_rmw_service_server_t *server)
Definition rmw_vtable.h:88
nros_rmw_ret_t(* send_request_raw)(nros_rmw_service_client_t *client, const uint8_t *request, size_t req_len)
Definition rmw_vtable.h:112
nros_rmw_ret_t(* pub_commit)(nros_rmw_publisher_t *publisher, void *token, size_t actual_len)
Definition rmw_vtable.h:226
int32_t(* try_recv_reply_raw)(nros_rmw_service_client_t *client, uint8_t *reply_buf, size_t reply_buf_len)
Definition rmw_vtable.h:123
nros_rmw_ret_t(* create_publisher)(nros_rmw_session_t *session, const char *topic_name, const char *type_name, const char *type_hash, uint32_t domain_id, const nros_rmw_qos_t *qos, nros_rmw_publisher_t *out)
Definition rmw_vtable.h:60
int32_t(* process_raw_in_place)(nros_rmw_subscriber_t *subscriber, void *ctx, void(*cb)(void *ctx, const uint8_t *ptr, size_t len))
Definition rmw_vtable.h:398
int32_t(* next_deadline_ms)(const nros_rmw_session_t *session)
Definition rmw_vtable.h:171
int32_t(* sub_borrow)(nros_rmw_subscriber_t *subscriber, const uint8_t **out_buf, size_t *out_len, void **out_token)
Definition rmw_vtable.h:252
int32_t(* try_recv_raw)(nros_rmw_subscriber_t *subscriber, uint8_t *buf, size_t buf_len)
Definition rmw_vtable.h:74
nros_rmw_ret_t(* ping_session)(nros_rmw_session_t *session, int32_t timeout_ms)
Definition rmw_vtable.h:379
nros_rmw_ret_t(* create_service_client)(nros_rmw_session_t *session, const char *service_name, const char *type_name, const char *type_hash, uint32_t domain_id, const nros_rmw_qos_t *qos, nros_rmw_service_client_t *out)
Definition rmw_vtable.h:93
void(* destroy_service_client)(nros_rmw_service_client_t *client)
Definition rmw_vtable.h:97
int32_t(* call_raw)(nros_rmw_service_client_t *client, const uint8_t *request, size_t req_len, uint8_t *reply_buf, size_t reply_buf_len)
Definition rmw_vtable.h:98
nros_rmw_ret_t(* pub_loan)(nros_rmw_publisher_t *publisher, size_t requested_len, uint8_t **out_buf, size_t *out_cap, void **out_token)
Definition rmw_vtable.h:212
nros_rmw_ret_t(* publish_streamed)(nros_rmw_publisher_t *publisher, void(*size_cb)(size_t *out_total_len, void *user_ctx), void(*chunk_cb)(uint8_t *out_buf, size_t cap, size_t *out_written, void *user_ctx), void *user_ctx)
Definition rmw_vtable.h:348
void(* pub_discard)(nros_rmw_publisher_t *publisher, void *token)
Definition rmw_vtable.h:236
nros_rmw_ret_t(* set_wake_callback)(nros_rmw_session_t *session, void(*cb)(void *ctx), void *ctx)
Definition rmw_vtable.h:191
void(* sub_release)(nros_rmw_subscriber_t *subscriber, void *token)
Definition rmw_vtable.h:264
void(* destroy_subscriber)(nros_rmw_subscriber_t *subscriber)
Definition rmw_vtable.h:73
int32_t(* has_data)(nros_rmw_subscriber_t *subscriber)
Definition rmw_vtable.h:76
nros_rmw_ret_t(* publish_raw)(nros_rmw_publisher_t *publisher, const uint8_t *data, size_t len)
Definition rmw_vtable.h:65
nros_rmw_ret_t(* close)(nros_rmw_session_t *session)
Definition rmw_vtable.h:53
nros_rmw_ret_t(* open)(const char *locator, uint8_t mode, uint32_t domain_id, const char *node_name, nros_rmw_session_t *out)
Definition rmw_vtable.h:50
nros_rmw_ret_t(* drive_io)(nros_rmw_session_t *session, int32_t timeout_ms)
Definition rmw_vtable.h:54