File astutedds.h
FileList > astutedds > c > astutedds.h
Go to the source code of this file
#include <stddef.h>#include <stdint.h>
Classes
| Type | Name |
|---|---|
| struct | AstuteDDS_DataReaderListener |
| struct | AstuteDDS_DataReaderQos |
| struct | AstuteDDS_DataWriterListener |
| struct | AstuteDDS_DataWriterQos |
| struct | AstuteDDS_EndpointInfo |
| struct | AstuteDDS_Gid |
| struct | AstuteDDS_LivelinessChangedStatus |
| struct | AstuteDDS_LivelinessLostStatus |
| struct | AstuteDDS_OfferedDeadlineMissedStatus |
| struct | AstuteDDS_OfferedIncompatibleQosStatus |
| struct | AstuteDDS_PublicationMatchedStatus |
| struct | AstuteDDS_RequestedDeadlineMissedStatus |
| struct | AstuteDDS_RequestedIncompatibleQosStatus |
| struct | AstuteDDS_RequesterQos |
| struct | AstuteDDS_Sample |
| struct | AstuteDDS_SampleLostStatus |
| struct | AstuteDDS_SubscriptionMatchedStatus |
Public Types
Public Functions
Public Static Functions
Macros
| Type | Name |
|---|---|
| define | ASTUTEDDS_DURATION_INFINITE (INT64\_C(0x7fffffffffffffff)) |
Public Types Documentation
typedef AstuteDDS_DataAvailableCallback
typedef void(* AstuteDDS_DataAvailableCallback) (void *user_data, AstuteDDS_DataReader reader);
typedef AstuteDDS_DataReader
typedef struct AstuteDDS_DataReader_s* AstuteDDS_DataReader;
typedef AstuteDDS_DataWriter
typedef struct AstuteDDS_DataWriter_s* AstuteDDS_DataWriter;
enum AstuteDDS_Durability
enum AstuteDDS_Durability {
ASTUTEDDS_VOLATILE = 0,
ASTUTEDDS_TRANSIENT_LOCAL = 1
};
typedef AstuteDDS_EndpointCallback
typedef void(* AstuteDDS_EndpointCallback) (void *user_data, const AstuteDDS_EndpointInfo *info);
Callback invoked once per discovered remote endpoint.
enum AstuteDDS_HistoryKind
enum AstuteDDS_HistoryKind {
ASTUTEDDS_KEEP_LAST = 0,
ASTUTEDDS_KEEP_ALL = 1
};
typedef AstuteDDS_LivelinessChangedCallback
typedef void(* AstuteDDS_LivelinessChangedCallback) (void *user_data, AstuteDDS_DataReader reader, const AstuteDDS_LivelinessChangedStatus *status);
§1.1b-B — LIVELINESS_CHANGED_STATUS (DDS §2.2.4.1.4). Fired on the reader side when the alive/not-alive count of matched remote writers changes.
enum AstuteDDS_LivelinessKind
enum AstuteDDS_LivelinessKind {
ASTUTEDDS_AUTOMATIC_LIVELINESS = 0,
ASTUTEDDS_MANUAL_BY_PARTICIPANT_LIVELINESS = 1,
ASTUTEDDS_MANUAL_BY_TOPIC_LIVELINESS = 2
};
LIVELINESS QoS kind (DDS §2.2.3.10).
typedef AstuteDDS_LivelinessLostCallback
typedef void(* AstuteDDS_LivelinessLostCallback) (void *user_data, AstuteDDS_DataWriter writer, const AstuteDDS_LivelinessLostStatus *status);
§1.1b-B — LIVELINESS_LOST_STATUS (DDS §2.2.4.1.3). Fired on the writer side when a local writer's lease elapses without an assertion.
typedef AstuteDDS_OfferedDeadlineMissedCallback
typedef void(* AstuteDDS_OfferedDeadlineMissedCallback) (void *user_data, AstuteDDS_DataWriter writer, const AstuteDDS_OfferedDeadlineMissedStatus *status);
§1.1b-B — OFFERED_DEADLINE_MISSED_STATUS (DDS §2.2.4.1.5). Fired on the writer side when a write() is not observed within the configured DEADLINE period.
typedef AstuteDDS_OfferedIncompatibleQosCallback
typedef void(* AstuteDDS_OfferedIncompatibleQosCallback) (void *user_data, AstuteDDS_DataWriter writer, const AstuteDDS_OfferedIncompatibleQosStatus *status);
typedef AstuteDDS_Participant
typedef struct AstuteDDS_Participant_s* AstuteDDS_Participant;
typedef AstuteDDS_PublicationMatchedCallback
typedef void(* AstuteDDS_PublicationMatchedCallback) (void *user_data, AstuteDDS_DataWriter writer, const AstuteDDS_PublicationMatchedStatus *status);
typedef AstuteDDS_Publisher
typedef struct AstuteDDS_Publisher_s* AstuteDDS_Publisher;
enum AstuteDDS_Reliability
enum AstuteDDS_Reliability {
ASTUTEDDS_BEST_EFFORT = 0,
ASTUTEDDS_RELIABLE = 1
};
typedef AstuteDDS_Replier
typedef struct AstuteDDS_Replier_s* AstuteDDS_Replier;
typedef AstuteDDS_ReplierQos
typedef AstuteDDS_RequesterQos AstuteDDS_ReplierQos;
typedef AstuteDDS_RequestedDeadlineMissedCallback
typedef void(* AstuteDDS_RequestedDeadlineMissedCallback) (void *user_data, AstuteDDS_DataReader reader, const AstuteDDS_RequestedDeadlineMissedStatus *status);
§1.1b-B — REQUESTED_DEADLINE_MISSED_STATUS (DDS §2.2.4.1.5). Fired on the reader side when a sample from a matched writer is not observed within the configured DEADLINE period.
typedef AstuteDDS_RequestedIncompatibleQosCallback
typedef void(* AstuteDDS_RequestedIncompatibleQosCallback) (void *user_data, AstuteDDS_DataReader reader, const AstuteDDS_RequestedIncompatibleQosStatus *status);
typedef AstuteDDS_Requester
typedef struct AstuteDDS_Requester_s* AstuteDDS_Requester;
enum AstuteDDS_ReturnCode
enum AstuteDDS_ReturnCode {
ASTUTEDDS_OK = 0,
ASTUTEDDS_ERROR = 1,
ASTUTEDDS_UNSUPPORTED = 2,
ASTUTEDDS_BAD_PARAM = 3,
ASTUTEDDS_PRECONDITION = 4,
ASTUTEDDS_OUT_OF_RESOURCES = 5,
ASTUTEDDS_NOT_ENABLED = 6,
ASTUTEDDS_TIMEOUT = 10,
ASTUTEDDS_NO_DATA = 11
};
typedef AstuteDDS_SampleLostCallback
typedef void(* AstuteDDS_SampleLostCallback) (void *user_data, AstuteDDS_DataReader reader, const AstuteDDS_SampleLostStatus *status);
§1.1b-B — SAMPLE_LOST_STATUS (DDS §2.2.4.1.7). Fired on the reader side when samples are dropped by the reader cache (KEEP_LAST overflow) or announced permanently unavailable via RTPS GAP.
typedef AstuteDDS_Subscriber
typedef struct AstuteDDS_Subscriber_s* AstuteDDS_Subscriber;
typedef AstuteDDS_SubscriptionMatchedCallback
typedef void(* AstuteDDS_SubscriptionMatchedCallback) (void *user_data, AstuteDDS_DataReader reader, const AstuteDDS_SubscriptionMatchedStatus *status);
typedef AstuteDDS_Topic
typedef struct AstuteDDS_Topic_s* AstuteDDS_Topic;
typedef AstuteDDS_TopicCallback
typedef void(* AstuteDDS_TopicCallback) (void *user_data, const char *topic_name, const char *type_name);
Callback invoked once per discovered {topic_name, type_name} pair. Called synchronously inside astutedds_get_topic_names_and_types().
Public Functions Documentation
function astutedds_create_datareader
AstuteDDS_DataReader astutedds_create_datareader (
AstuteDDS_Subscriber sub,
AstuteDDS_Topic topic,
const AstuteDDS_DataReaderQos * qos
)
NULL → default QoS
function astutedds_create_datawriter
AstuteDDS_DataWriter astutedds_create_datawriter (
AstuteDDS_Publisher pub,
AstuteDDS_Topic topic,
const AstuteDDS_DataWriterQos * qos
)
NULL → default QoS
function astutedds_create_participant
AstuteDDS_Participant astutedds_create_participant (
uint32_t domain_id
)
Create and enable a DomainParticipant.
Returns:
Handle, or NULL on failure.
function astutedds_create_publisher
AstuteDDS_Publisher astutedds_create_publisher (
AstuteDDS_Participant p
)
function astutedds_create_replier
AstuteDDS_Replier astutedds_create_replier (
AstuteDDS_Participant participant,
const char * service_name,
const char * request_type_name,
const char * reply_type_name,
const AstuteDDS_ReplierQos * qos
)
Create a Replier on the given service.
function astutedds_create_requester
AstuteDDS_Requester astutedds_create_requester (
AstuteDDS_Participant participant,
const char * service_name,
const char * request_type_name,
const char * reply_type_name,
const AstuteDDS_RequesterQos * qos
)
Create a Requester on the given service. The two DDS topics rq/<service_name>Request and rr/<service_name>Reply are created (or reused) automatically.
Returns:
Handle, or NULL on failure.
function astutedds_create_subscriber
AstuteDDS_Subscriber astutedds_create_subscriber (
AstuteDDS_Participant p
)
function astutedds_create_topic
AstuteDDS_Topic astutedds_create_topic (
AstuteDDS_Participant p,
const char * topic_name,
const char * type_name
)
function astutedds_datareader_drain_read_fd
AstuteDDS_ReturnCode astutedds_datareader_drain_read_fd (
int fd
)
Drain all pending arrival credits from the fd returned by astutedds_datareader_get_read_fd(). Non-blocking; safe to call from any thread. Intended as a level-triggered helper for callers that treat the eventfd as "data pending" rather than "one sample pending".
Returns:
ASTUTEDDS_OK, or ASTUTEDDS_BAD_PARAM for an invalid fd.
function astutedds_datareader_get_gid
AstuteDDS_ReturnCode astutedds_datareader_get_gid (
AstuteDDS_DataReader r,
AstuteDDS_Gid * out
)
function astutedds_datareader_get_liveliness_changed_status
AstuteDDS_ReturnCode astutedds_datareader_get_liveliness_changed_status (
AstuteDDS_DataReader r,
AstuteDDS_LivelinessChangedStatus * out
)
§1.1b-B — Read and drain a DataReader's liveliness-changed status (DDS §2.2.4.1.4). Snapshot returned reflects the participant's view of matched remote-writer liveliness at the time of the call.
function astutedds_datareader_get_qos
AstuteDDS_ReturnCode astutedds_datareader_get_qos (
AstuteDDS_DataReader r,
AstuteDDS_DataReaderQos * out
)
function astutedds_datareader_get_read_fd
int astutedds_datareader_get_read_fd (
AstuteDDS_DataReader r
)
function astutedds_datareader_get_requested_deadline_missed_status
AstuteDDS_ReturnCode astutedds_datareader_get_requested_deadline_missed_status (
AstuteDDS_DataReader r,
AstuteDDS_RequestedDeadlineMissedStatus * out
)
§1.1b-B — DEADLINE QoS. Read and drain the reader-side requested-deadline-missed status (DDS §2.2.4.1.5).
function astutedds_datareader_get_requested_incompatible_qos_status
AstuteDDS_ReturnCode astutedds_datareader_get_requested_incompatible_qos_status (
AstuteDDS_DataReader r,
AstuteDDS_RequestedIncompatibleQosStatus * out
)
Read and drain a DataReader's requested-incompatible-qos status.
function astutedds_datareader_get_sample_lost_status
AstuteDDS_ReturnCode astutedds_datareader_get_sample_lost_status (
AstuteDDS_DataReader r,
AstuteDDS_SampleLostStatus * out
)
§1.1b-B — SAMPLE_LOST_STATUS (DDS §2.2.4.1.7). Bumped by the reader cache when a KEEP_LAST slot overflows and a sample is silently discarded. total_count_change resets on read.
function astutedds_datareader_get_subscription_matched_status
AstuteDDS_ReturnCode astutedds_datareader_get_subscription_matched_status (
AstuteDDS_DataReader r,
AstuteDDS_SubscriptionMatchedStatus * out
)
Read and drain a DataReader's subscription-matched status.
function astutedds_datareader_set_listener
AstuteDDS_ReturnCode astutedds_datareader_set_listener (
AstuteDDS_DataReader r,
const AstuteDDS_DataReaderListener * listener
)
function astutedds_datawriter_assert_liveliness
AstuteDDS_ReturnCode astutedds_datawriter_assert_liveliness (
AstuteDDS_DataWriter w
)
§1.1b-B — Manually assert liveliness for MANUAL_BY_TOPIC / MANUAL_BY_PARTICIPANT DataWriters (DDS §2.2.3.10). Returns ASTUTEDDS_OK if the assertion was routed to the LivelinessManager, ASTUTEDDS_BAD_PARAM for a null handle.
function astutedds_datawriter_get_gid
AstuteDDS_ReturnCode astutedds_datawriter_get_gid (
AstuteDDS_DataWriter w,
AstuteDDS_Gid * out
)
function astutedds_datawriter_get_liveliness_lost_status
AstuteDDS_ReturnCode astutedds_datawriter_get_liveliness_lost_status (
AstuteDDS_DataWriter w,
AstuteDDS_LivelinessLostStatus * out
)
§1.1b-B — LIVELINESS QoS. Read and drain the writer-side liveliness-lost status (DDS §2.2.4.1.3). total_count_change resets to zero on this call.
function astutedds_datawriter_get_offered_deadline_missed_status
AstuteDDS_ReturnCode astutedds_datawriter_get_offered_deadline_missed_status (
AstuteDDS_DataWriter w,
AstuteDDS_OfferedDeadlineMissedStatus * out
)
§1.1b-B — DEADLINE QoS. Read and drain the writer-side offered-deadline-missed status (DDS §2.2.4.1.5).
function astutedds_datawriter_get_offered_incompatible_qos_status
AstuteDDS_ReturnCode astutedds_datawriter_get_offered_incompatible_qos_status (
AstuteDDS_DataWriter w,
AstuteDDS_OfferedIncompatibleQosStatus * out
)
Read and drain a DataWriter's offered-incompatible-qos status.
function astutedds_datawriter_get_publication_matched_status
AstuteDDS_ReturnCode astutedds_datawriter_get_publication_matched_status (
AstuteDDS_DataWriter w,
AstuteDDS_PublicationMatchedStatus * out
)
Read and drain a DataWriter's publication-matched status. Per DDS §2.2.4.1, the *_change fields are reset to zero after this call, so subsequent reads only report deltas since the previous read.
function astutedds_datawriter_get_qos
AstuteDDS_ReturnCode astutedds_datawriter_get_qos (
AstuteDDS_DataWriter w,
AstuteDDS_DataWriterQos * out
)
Read back the currently effective QoS on a DataWriter. Populates the same struct that was used at create time.
function astutedds_datawriter_set_listener
AstuteDDS_ReturnCode astutedds_datawriter_set_listener (
AstuteDDS_DataWriter w,
const AstuteDDS_DataWriterListener * listener
)
function astutedds_delete_datareader
void astutedds_delete_datareader (
AstuteDDS_Subscriber sub,
AstuteDDS_DataReader r
)
function astutedds_delete_datawriter
void astutedds_delete_datawriter (
AstuteDDS_Publisher pub,
AstuteDDS_DataWriter w
)
function astutedds_delete_participant
void astutedds_delete_participant (
AstuteDDS_Participant p
)
Stop and destroy a DomainParticipant. All child entities must have been deleted first.
function astutedds_delete_publisher
void astutedds_delete_publisher (
AstuteDDS_Participant p,
AstuteDDS_Publisher pub
)
function astutedds_delete_replier
void astutedds_delete_replier (
AstuteDDS_Participant participant,
AstuteDDS_Replier replier
)
Destroy a Replier.
function astutedds_delete_requester
void astutedds_delete_requester (
AstuteDDS_Participant participant,
AstuteDDS_Requester requester
)
Destroy a Requester.
function astutedds_delete_subscriber
void astutedds_delete_subscriber (
AstuteDDS_Participant p,
AstuteDDS_Subscriber sub
)
function astutedds_delete_topic
void astutedds_delete_topic (
AstuteDDS_Participant p,
AstuteDDS_Topic t
)
function astutedds_enumerate_publications
void astutedds_enumerate_publications (
AstuteDDS_Participant p,
AstuteDDS_EndpointCallback callback,
void * user_data
)
Enumerate all currently discovered remote DataWriters. One callback per endpoint; participants that own multiple writers produce one callback each.
function astutedds_enumerate_subscriptions
void astutedds_enumerate_subscriptions (
AstuteDDS_Participant p,
AstuteDDS_EndpointCallback callback,
void * user_data
)
Enumerate all currently discovered remote DataReaders.
function astutedds_get_topic_names_and_types
void astutedds_get_topic_names_and_types (
AstuteDDS_Participant p,
AstuteDDS_TopicCallback callback,
void * user_data
)
Enumerate all topics currently known to the participant (local + discovered remote). For each unique topic_name the callback is invoked exactly once.
Parameters:
pThe DomainParticipant to query.callbackCalled for each topic.user_dataPassed through to every callback invocation.
function astutedds_participant_get_gid
AstuteDDS_ReturnCode astutedds_participant_get_gid (
AstuteDDS_Participant p,
AstuteDDS_Gid * out
)
Fetch the 12-byte participant GUID prefix (zero-padded to 16 bytes: entity ID slot left as 0x00000000 for a participant handle).
Returns:
ASTUTEDDS_OK on success; ASTUTEDDS_BAD_PARAM on NULL args.
function astutedds_participant_set_user_data
AstuteDDS_ReturnCode astutedds_participant_set_user_data (
AstuteDDS_Participant p,
const uint8_t * data,
size_t length
)
Set the participant USER_DATA blob (DomainParticipantQos::user_data.value). Must be called before any entities are created so the value is announced in the first outbound SPDP. Copies the buffer; caller may free after return.
ROS 2 RMW uses this to advertise node name/namespace.
Returns:
ASTUTEDDS_OK, ASTUTEDDS_BAD_PARAM, ASTUTEDDS_PRECONDITION (already announced).
function astutedds_replier_get_reply_writer
AstuteDDS_DataWriter astutedds_replier_get_reply_writer (
AstuteDDS_Replier replier
)
Underlying reply DataWriter handle.
function astutedds_replier_get_request_reader
AstuteDDS_DataReader astutedds_replier_get_request_reader (
AstuteDDS_Replier replier
)
Underlying request DataReader handle.
function astutedds_replier_send_reply
AstuteDDS_ReturnCode astutedds_replier_send_reply (
AstuteDDS_Replier replier,
const uint8_t * client_gid,
int64_t sequence_number,
const uint8_t * payload,
size_t payload_length
)
Send a reply. The caller must supply the client_gid + sequence_number previously obtained from astutedds_replier_take_request so the reply reaches the correct Requester.
function astutedds_replier_take_request
AstuteDDS_ReturnCode astutedds_replier_take_request (
AstuteDDS_Replier replier,
const uint8_t ** out_payload,
size_t * out_payload_length,
uint8_t * out_client_gid,
int64_t * out_sequence_number
)
Take the next request. On success, out_payload/out_payload_length point into a buffer owned by the Replier and valid until the next call to astutedds_replier_take_request; out_client_gid is a 16-byte copy of the calling Requester's GID; out_sequence_number is the request's sequence. All three of the caller-supplied gid/seq output pointers are required (non-NULL) when this call succeeds.
Parameters:
out_client_giddestination buffer, must be at least 16 bytes.
function astutedds_requester_get_gid
AstuteDDS_ReturnCode astutedds_requester_get_gid (
AstuteDDS_Requester requester,
uint8_t * out_gid
)
Copy this Requester's 16-byte GID into out_gid.
Parameters:
out_giddestination buffer, must be at least 16 bytes.
function astutedds_requester_get_reply_reader
AstuteDDS_DataReader astutedds_requester_get_reply_reader (
AstuteDDS_Requester requester
)
Underlying reply DataReader handle — useful for attaching a listener.
function astutedds_requester_get_request_writer
AstuteDDS_DataWriter astutedds_requester_get_request_writer (
AstuteDDS_Requester requester
)
Underlying request DataWriter handle.
function astutedds_requester_send_request
AstuteDDS_ReturnCode astutedds_requester_send_request (
AstuteDDS_Requester requester,
const uint8_t * payload,
size_t payload_length,
int64_t * out_sequence_number
)
Send a request. The 24-byte correlation header (GID + auto-incrementing sequence number) is prepended internally; payload contains only the user bytes.
Parameters:
out_sequence_numberOptional; when non-NULL receives the sequence number assigned to this request.
Returns:
ASTUTEDDS_OK on success.
function astutedds_requester_take_reply
AstuteDDS_ReturnCode astutedds_requester_take_reply (
AstuteDDS_Requester requester,
const uint8_t ** out_payload,
size_t * out_payload_length,
int64_t * out_sequence_number
)
Take the next reply addressed to this Requester (matches by GID). The returned pointer is owned by the Requester and remains valid until the next call to astutedds_requester_take_reply on the same handle. Returns ASTUTEDDS_NO_DATA when no matching reply is queued.
function astutedds_take_next
AstuteDDS_ReturnCode astutedds_take_next (
AstuteDDS_DataReader r,
AstuteDDS_Sample * out
)
Take the next available sample (removes it from the reader cache).
On ASTUTEDDS_OK the sample fields are populated and the internal buffer is valid until the next call to astutedds_take_next() on the same reader. Copy *data before calling again.
Returns:
ASTUTEDDS_OK | ASTUTEDDS_NO_DATA | ASTUTEDDS_ERROR
function astutedds_topic_name
const char * astutedds_topic_name (
AstuteDDS_Topic t
)
function astutedds_topic_type_name
const char * astutedds_topic_type_name (
AstuteDDS_Topic t
)
function astutedds_unread_count
size_t astutedds_unread_count (
AstuteDDS_DataReader r
)
Return the number of unread samples in the reader cache.
function astutedds_write
AstuteDDS_ReturnCode astutedds_write (
AstuteDDS_DataWriter w,
const uint8_t * data,
size_t len
)
Write a serialised sample.
Parameters:
dataCDR-encoded payload bytes.lenByte length of data.
Public Static Functions Documentation
function astutedds_default_datareader_qos
static inline AstuteDDS_DataReaderQos astutedds_default_datareader_qos (
void
)
function astutedds_default_datawriter_qos
static inline AstuteDDS_DataWriterQos astutedds_default_datawriter_qos (
void
)
function astutedds_default_replier_qos
static inline AstuteDDS_ReplierQos astutedds_default_replier_qos (
void
)
function astutedds_default_requester_qos
static inline AstuteDDS_RequesterQos astutedds_default_requester_qos (
void
)
Macro Definition Documentation
define ASTUTEDDS_DURATION_INFINITE
#define ASTUTEDDS_DURATION_INFINITE `(INT64_C(0x7fffffffffffffff))`
Sentinel Duration_t value meaning "infinite" for the *_duration_ns / *_period_ns fields on the QoS structs. Any negative value is treated the same way.
The documentation for this class was generated from the following file include/astutedds/c/astutedds.h