#ifndef ZERODDS_H
#define ZERODDS_H
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
typedef void (*zerodds_Option_ZeroDdsDataCallback)(void *user_data, const uint8_t *payload, size_t payload_len);
typedef int (*zerodds_Option_ZeroDdsDecodeFn)(const uint8_t *buf, size_t len, void *out_sample);
typedef int (*zerodds_Option_ZeroDdsEncodeFn)(const void *sample, uint8_t *out_buf, size_t out_cap, size_t *out_len);
typedef int (*zerodds_Option_ZeroDdsKeyHashFn)(const void *sample, uint8_t *out_hash);
typedef void (*zerodds_Option_ZeroDdsSampleFreeFn)(void *sample);
typedef struct zerodds_ZeroDdsBuiltinSubscriber zerodds_ZeroDdsBuiltinSubscriber;
typedef struct zerodds_ZeroDdsContentFilteredTopic zerodds_ZeroDdsContentFilteredTopic;
typedef struct zerodds_ZeroDdsDataReader zerodds_ZeroDdsDataReader;
typedef struct zerodds_ZeroDdsDataWriter zerodds_ZeroDdsDataWriter;
typedef struct zerodds_ZeroDdsDomainParticipant zerodds_ZeroDdsDomainParticipant;
typedef struct zerodds_ZeroDdsDomainParticipantFactory zerodds_ZeroDdsDomainParticipantFactory;
typedef struct zerodds_ZeroDdsGuardCondition zerodds_ZeroDdsGuardCondition;
typedef struct zerodds_ZeroDdsPublisher zerodds_ZeroDdsPublisher;
typedef struct zerodds_ZeroDdsQueryCondition zerodds_ZeroDdsQueryCondition;
typedef struct zerodds_ZeroDdsReadCondition zerodds_ZeroDdsReadCondition;
typedef struct zerodds_ZeroDdsReader zerodds_ZeroDdsReader;
typedef struct zerodds_ZeroDdsRuntime zerodds_ZeroDdsRuntime;
typedef struct zerodds_ZeroDdsStatusCondition zerodds_ZeroDdsStatusCondition;
typedef struct zerodds_ZeroDdsSubscriber zerodds_ZeroDdsSubscriber;
typedef struct zerodds_ZeroDdsTopic zerodds_ZeroDdsTopic;
typedef struct zerodds_ZeroDdsWaitSet zerodds_ZeroDdsWaitSet;
typedef struct zerodds_ZeroDdsWriter zerodds_ZeroDdsWriter;
typedef struct zerodds_ZeroDdsParticipantBuiltinTopicData {
uint8_t guid[16];
const uint8_t *user_data;
uintptr_t user_data_len;
} zerodds_ZeroDdsParticipantBuiltinTopicData;
typedef struct zerodds_ZeroDdsTopicBuiltinTopicData {
uint8_t key[16];
char *name;
char *type_name;
uint32_t durability_kind;
uint32_t reliability_kind;
} zerodds_ZeroDdsTopicBuiltinTopicData;
typedef struct zerodds_ZeroDdsUserDataQosPolicy {
const uint8_t *value;
uintptr_t value_len;
} zerodds_ZeroDdsUserDataQosPolicy;
typedef struct zerodds_ZeroDdsEntityFactoryQosPolicy {
bool autoenable_created_entities;
} zerodds_ZeroDdsEntityFactoryQosPolicy;
typedef struct zerodds_ZeroDdsDomainParticipantQos {
struct zerodds_ZeroDdsUserDataQosPolicy user_data;
struct zerodds_ZeroDdsEntityFactoryQosPolicy entity_factory;
} zerodds_ZeroDdsDomainParticipantQos;
typedef struct zerodds_ZeroDdsDurabilityQosPolicy {
uint32_t kind;
} zerodds_ZeroDdsDurabilityQosPolicy;
typedef struct zerodds_ZeroDdsDuration {
int32_t sec;
uint32_t nanosec;
} zerodds_ZeroDdsDuration;
#define zerodds_ZeroDdsDuration_INFINITE (zerodds_ZeroDdsDuration){ .sec = INT32_MAX, .nanosec = UINT32_MAX }
typedef struct zerodds_ZeroDdsDurabilityServiceQosPolicy {
struct zerodds_ZeroDdsDuration service_cleanup_delay;
uint32_t history_kind;
int32_t history_depth;
int32_t max_samples;
int32_t max_instances;
int32_t max_samples_per_instance;
} zerodds_ZeroDdsDurabilityServiceQosPolicy;
typedef struct zerodds_ZeroDdsDeadlineQosPolicy {
struct zerodds_ZeroDdsDuration period;
} zerodds_ZeroDdsDeadlineQosPolicy;
typedef struct zerodds_ZeroDdsLatencyBudgetQosPolicy {
struct zerodds_ZeroDdsDuration duration;
} zerodds_ZeroDdsLatencyBudgetQosPolicy;
typedef struct zerodds_ZeroDdsLivelinessQosPolicy {
uint32_t kind;
struct zerodds_ZeroDdsDuration lease_duration;
} zerodds_ZeroDdsLivelinessQosPolicy;
typedef struct zerodds_ZeroDdsReliabilityQosPolicy {
uint32_t kind;
struct zerodds_ZeroDdsDuration max_blocking_time;
} zerodds_ZeroDdsReliabilityQosPolicy;
typedef struct zerodds_ZeroDdsDestinationOrderQosPolicy {
uint32_t kind;
} zerodds_ZeroDdsDestinationOrderQosPolicy;
typedef struct zerodds_ZeroDdsHistoryQosPolicy {
uint32_t kind;
int32_t depth;
} zerodds_ZeroDdsHistoryQosPolicy;
typedef struct zerodds_ZeroDdsResourceLimitsQosPolicy {
int32_t max_samples;
int32_t max_instances;
int32_t max_samples_per_instance;
} zerodds_ZeroDdsResourceLimitsQosPolicy;
typedef struct zerodds_ZeroDdsTransportPriorityQosPolicy {
int32_t value;
} zerodds_ZeroDdsTransportPriorityQosPolicy;
typedef struct zerodds_ZeroDdsLifespanQosPolicy {
struct zerodds_ZeroDdsDuration duration;
} zerodds_ZeroDdsLifespanQosPolicy;
typedef struct zerodds_ZeroDdsOwnershipQosPolicy {
uint32_t kind;
} zerodds_ZeroDdsOwnershipQosPolicy;
typedef struct zerodds_ZeroDdsUserDataQosPolicy zerodds_ZeroDdsTopicDataQosPolicy;
typedef struct zerodds_ZeroDdsTopicQos {
struct zerodds_ZeroDdsDurabilityQosPolicy durability;
struct zerodds_ZeroDdsDurabilityServiceQosPolicy durability_service;
struct zerodds_ZeroDdsDeadlineQosPolicy deadline;
struct zerodds_ZeroDdsLatencyBudgetQosPolicy latency_budget;
struct zerodds_ZeroDdsLivelinessQosPolicy liveliness;
struct zerodds_ZeroDdsReliabilityQosPolicy reliability;
struct zerodds_ZeroDdsDestinationOrderQosPolicy destination_order;
struct zerodds_ZeroDdsHistoryQosPolicy history;
struct zerodds_ZeroDdsResourceLimitsQosPolicy resource_limits;
struct zerodds_ZeroDdsTransportPriorityQosPolicy transport_priority;
struct zerodds_ZeroDdsLifespanQosPolicy lifespan;
struct zerodds_ZeroDdsOwnershipQosPolicy ownership;
zerodds_ZeroDdsTopicDataQosPolicy topic_data;
} zerodds_ZeroDdsTopicQos;
typedef struct zerodds_ZeroDdsPresentationQosPolicy {
uint32_t access_scope;
bool coherent_access;
bool ordered_access;
} zerodds_ZeroDdsPresentationQosPolicy;
typedef struct zerodds_ZeroDdsPartitionQosPolicy {
const char *const *names;
uintptr_t names_len;
} zerodds_ZeroDdsPartitionQosPolicy;
typedef struct zerodds_ZeroDdsUserDataQosPolicy zerodds_ZeroDdsGroupDataQosPolicy;
typedef struct zerodds_ZeroDdsPublisherQos {
struct zerodds_ZeroDdsPresentationQosPolicy presentation;
struct zerodds_ZeroDdsPartitionQosPolicy partition;
zerodds_ZeroDdsGroupDataQosPolicy group_data;
struct zerodds_ZeroDdsEntityFactoryQosPolicy entity_factory;
} zerodds_ZeroDdsPublisherQos;
typedef struct zerodds_ZeroDdsPublisherQos zerodds_ZeroDdsSubscriberQos;
typedef struct zerodds_ZeroDdsOwnershipStrengthQosPolicy {
int32_t value;
} zerodds_ZeroDdsOwnershipStrengthQosPolicy;
typedef struct zerodds_ZeroDdsWriterDataLifecycleQosPolicy {
bool autodispose_unregistered_instances;
} zerodds_ZeroDdsWriterDataLifecycleQosPolicy;
typedef struct zerodds_ZeroDdsDataWriterQos {
struct zerodds_ZeroDdsReliabilityQosPolicy reliability;
struct zerodds_ZeroDdsDurabilityQosPolicy durability;
struct zerodds_ZeroDdsDurabilityServiceQosPolicy durability_service;
struct zerodds_ZeroDdsDeadlineQosPolicy deadline;
struct zerodds_ZeroDdsLatencyBudgetQosPolicy latency_budget;
struct zerodds_ZeroDdsLivelinessQosPolicy liveliness;
struct zerodds_ZeroDdsDestinationOrderQosPolicy destination_order;
struct zerodds_ZeroDdsLifespanQosPolicy lifespan;
struct zerodds_ZeroDdsOwnershipQosPolicy ownership;
struct zerodds_ZeroDdsOwnershipStrengthQosPolicy ownership_strength;
struct zerodds_ZeroDdsPartitionQosPolicy partition;
struct zerodds_ZeroDdsPresentationQosPolicy presentation;
struct zerodds_ZeroDdsHistoryQosPolicy history;
struct zerodds_ZeroDdsResourceLimitsQosPolicy resource_limits;
struct zerodds_ZeroDdsTransportPriorityQosPolicy transport_priority;
struct zerodds_ZeroDdsWriterDataLifecycleQosPolicy writer_data_lifecycle;
struct zerodds_ZeroDdsUserDataQosPolicy user_data;
zerodds_ZeroDdsTopicDataQosPolicy topic_data;
zerodds_ZeroDdsGroupDataQosPolicy group_data;
} zerodds_ZeroDdsDataWriterQos;
typedef struct zerodds_ZeroDdsTimeBasedFilterQosPolicy {
struct zerodds_ZeroDdsDuration minimum_separation;
} zerodds_ZeroDdsTimeBasedFilterQosPolicy;
typedef struct zerodds_ZeroDdsReaderDataLifecycleQosPolicy {
struct zerodds_ZeroDdsDuration autopurge_nowriter_samples_delay;
struct zerodds_ZeroDdsDuration autopurge_disposed_samples_delay;
} zerodds_ZeroDdsReaderDataLifecycleQosPolicy;
typedef struct zerodds_ZeroDdsDataReaderQos {
struct zerodds_ZeroDdsReliabilityQosPolicy reliability;
struct zerodds_ZeroDdsDurabilityQosPolicy durability;
struct zerodds_ZeroDdsDeadlineQosPolicy deadline;
struct zerodds_ZeroDdsLatencyBudgetQosPolicy latency_budget;
struct zerodds_ZeroDdsLivelinessQosPolicy liveliness;
struct zerodds_ZeroDdsDestinationOrderQosPolicy destination_order;
struct zerodds_ZeroDdsOwnershipQosPolicy ownership;
struct zerodds_ZeroDdsPartitionQosPolicy partition;
struct zerodds_ZeroDdsPresentationQosPolicy presentation;
struct zerodds_ZeroDdsHistoryQosPolicy history;
struct zerodds_ZeroDdsResourceLimitsQosPolicy resource_limits;
struct zerodds_ZeroDdsTimeBasedFilterQosPolicy time_based_filter;
struct zerodds_ZeroDdsReaderDataLifecycleQosPolicy reader_data_lifecycle;
struct zerodds_ZeroDdsUserDataQosPolicy user_data;
zerodds_ZeroDdsTopicDataQosPolicy topic_data;
zerodds_ZeroDdsGroupDataQosPolicy group_data;
} zerodds_ZeroDdsDataReaderQos;
typedef struct zerodds_ZeroDdsSubscriptionBuiltinTopicData {
uint8_t key[16];
uint8_t participant_key[16];
char *topic_name;
char *type_name;
uint32_t durability_kind;
uint32_t reliability_kind;
uint32_t ownership_kind;
int32_t liveliness_lease_seconds;
int32_t deadline_seconds;
} zerodds_ZeroDdsSubscriptionBuiltinTopicData;
typedef struct zerodds_ZeroDdsSampleInfo {
uint32_t sample_state;
uint32_t view_state;
uint32_t instance_state;
int32_t disposed_generation_count;
int32_t no_writers_generation_count;
int32_t sample_rank;
int32_t generation_rank;
int32_t absolute_generation_rank;
int32_t source_timestamp_sec;
uint32_t source_timestamp_nanosec;
uint64_t instance_handle;
uint64_t publication_handle;
bool valid_data;
} zerodds_ZeroDdsSampleInfo;
typedef struct zerodds_ZeroDdsSampleArray {
uint8_t **buffers;
uintptr_t *lengths;
struct zerodds_ZeroDdsSampleInfo *infos;
uintptr_t count;
void *loan_token;
} zerodds_ZeroDdsSampleArray;
typedef struct zerodds_ZeroDdsPublicationBuiltinTopicData {
uint8_t key[16];
uint8_t participant_key[16];
char *topic_name;
char *type_name;
uint32_t durability_kind;
uint32_t reliability_kind;
uint32_t ownership_kind;
int32_t ownership_strength;
int32_t liveliness_lease_seconds;
int32_t deadline_seconds;
int32_t lifespan_seconds;
} zerodds_ZeroDdsPublicationBuiltinTopicData;
typedef struct zerodds_ZeroDdsDomainParticipantFactoryQos {
struct zerodds_ZeroDdsEntityFactoryQosPolicy entity_factory;
} zerodds_ZeroDdsDomainParticipantFactoryQos;
typedef struct zerodds_ZeroDdsDomainParticipantListener {
void *user_data;
void (*on_inconsistent_topic)(void*, struct zerodds_ZeroDdsTopic*);
void (*on_data_on_readers)(void*, struct zerodds_ZeroDdsSubscriber*);
} zerodds_ZeroDdsDomainParticipantListener;
typedef struct zerodds_ZeroDdsPublisherListener {
void *user_data;
void (*on_offered_deadline_missed)(void*, struct zerodds_ZeroDdsDataWriter*);
void (*on_liveliness_lost)(void*, struct zerodds_ZeroDdsDataWriter*);
void (*on_offered_incompatible_qos)(void*, struct zerodds_ZeroDdsDataWriter*);
void (*on_publication_matched)(void*, struct zerodds_ZeroDdsDataWriter*);
} zerodds_ZeroDdsPublisherListener;
typedef struct zerodds_ZeroDdsSubscriberListener {
void *user_data;
void (*on_data_on_readers)(void*, struct zerodds_ZeroDdsSubscriber*);
void (*on_sample_lost)(void*, struct zerodds_ZeroDdsDataReader*);
void (*on_sample_rejected)(void*, struct zerodds_ZeroDdsDataReader*);
void (*on_liveliness_changed)(void*, struct zerodds_ZeroDdsDataReader*);
void (*on_subscription_matched)(void*, struct zerodds_ZeroDdsDataReader*);
void (*on_requested_deadline_missed)(void*, struct zerodds_ZeroDdsDataReader*);
void (*on_requested_incompatible_qos)(void*, struct zerodds_ZeroDdsDataReader*);
void (*on_data_available)(void*, struct zerodds_ZeroDdsDataReader*);
} zerodds_ZeroDdsSubscriberListener;
typedef struct zerodds_ZeroDdsTopicListener {
void *user_data;
void (*on_inconsistent_topic)(void*, struct zerodds_ZeroDdsTopic*);
} zerodds_ZeroDdsTopicListener;
typedef struct zerodds_ZeroDdsDataWriterListener {
void *user_data;
void (*on_liveliness_lost)(void*, struct zerodds_ZeroDdsDataWriter*);
void (*on_offered_deadline_missed)(void*, struct zerodds_ZeroDdsDataWriter*);
void (*on_offered_incompatible_qos)(void*, struct zerodds_ZeroDdsDataWriter*);
void (*on_publication_matched)(void*, struct zerodds_ZeroDdsDataWriter*);
} zerodds_ZeroDdsDataWriterListener;
typedef struct zerodds_ZeroDdsDataReaderListener {
void *user_data;
void (*on_data_available)(void*, struct zerodds_ZeroDdsDataReader*);
void (*on_sample_rejected)(void*, struct zerodds_ZeroDdsDataReader*);
void (*on_liveliness_changed)(void*, struct zerodds_ZeroDdsDataReader*);
void (*on_requested_deadline_missed)(void*, struct zerodds_ZeroDdsDataReader*);
void (*on_requested_incompatible_qos)(void*, struct zerodds_ZeroDdsDataReader*);
void (*on_subscription_matched)(void*, struct zerodds_ZeroDdsDataReader*);
void (*on_sample_lost)(void*, struct zerodds_ZeroDdsDataReader*);
} zerodds_ZeroDdsDataReaderListener;
typedef struct zerodds_ZeroDdsLivelinessLostStatus {
int32_t total_count;
int32_t total_count_change;
} zerodds_ZeroDdsLivelinessLostStatus;
typedef struct zerodds_ZeroDdsOfferedDeadlineMissedStatus {
int32_t total_count;
int32_t total_count_change;
uint64_t last_instance_handle;
} zerodds_ZeroDdsOfferedDeadlineMissedStatus;
typedef struct zerodds_ZeroDdsOfferedIncompatibleQosStatus {
int32_t total_count;
int32_t total_count_change;
uint32_t last_policy_id;
} zerodds_ZeroDdsOfferedIncompatibleQosStatus;
typedef struct zerodds_ZeroDdsPublicationMatchedStatus {
int32_t total_count;
int32_t total_count_change;
int32_t current_count;
int32_t current_count_change;
uint64_t last_subscription_handle;
} zerodds_ZeroDdsPublicationMatchedStatus;
typedef struct zerodds_ZeroDdsLivelinessChangedStatus {
int32_t alive_count;
int32_t not_alive_count;
int32_t alive_count_change;
int32_t not_alive_count_change;
uint64_t last_publication_handle;
} zerodds_ZeroDdsLivelinessChangedStatus;
typedef struct zerodds_ZeroDdsSubscriptionMatchedStatus {
int32_t total_count;
int32_t total_count_change;
int32_t current_count;
int32_t current_count_change;
uint64_t last_publication_handle;
} zerodds_ZeroDdsSubscriptionMatchedStatus;
typedef struct zerodds_ZeroDdsRequestedDeadlineMissedStatus {
int32_t total_count;
int32_t total_count_change;
uint64_t last_instance_handle;
} zerodds_ZeroDdsRequestedDeadlineMissedStatus;
typedef struct zerodds_ZeroDdsRequestedIncompatibleQosStatus {
int32_t total_count;
int32_t total_count_change;
uint32_t last_policy_id;
} zerodds_ZeroDdsRequestedIncompatibleQosStatus;
typedef struct zerodds_ZeroDdsSampleLostStatus {
int32_t total_count;
int32_t total_count_change;
} zerodds_ZeroDdsSampleLostStatus;
typedef struct zerodds_ZeroDdsSampleRejectedStatus {
int32_t total_count;
int32_t total_count_change;
uint32_t last_reason;
uint64_t last_instance_handle;
} zerodds_ZeroDdsSampleRejectedStatus;
typedef struct zerodds_ZeroDdsInconsistentTopicStatus {
int32_t total_count;
int32_t total_count_change;
} zerodds_ZeroDdsInconsistentTopicStatus;
typedef struct zerodds_ZeroDdsTypeSupport {
uint8_t type_hash[16];
const char *type_name;
uint8_t is_keyed;
uint8_t extensibility;
uint8_t _reserved[6];
zerodds_Option_ZeroDdsEncodeFn encode;
zerodds_Option_ZeroDdsDecodeFn decode;
zerodds_Option_ZeroDdsKeyHashFn key_hash;
zerodds_Option_ZeroDdsSampleFreeFn sample_free;
} zerodds_ZeroDdsTypeSupport;
#ifdef __cplusplus
extern "C" {
#endif
struct zerodds_ZeroDdsRuntime *zerodds_runtime_create(uint32_t domain_id);
void zerodds_runtime_destroy(struct zerodds_ZeroDdsRuntime *runtime);
int zerodds_runtime_wait_for_peers(struct zerodds_ZeroDdsRuntime *runtime,
int min_count,
uint64_t timeout_ms);
struct zerodds_ZeroDdsWriter *zerodds_writer_create(struct zerodds_ZeroDdsRuntime *runtime,
const char *topic_name,
const char *type_name,
int reliable);
int zerodds_writer_write(struct zerodds_ZeroDdsWriter *writer,
const uint8_t *payload,
uintptr_t len);
int zerodds_writer_wait_for_matched(struct zerodds_ZeroDdsWriter *writer,
int min_count,
uint64_t timeout_ms);
int zerodds_writer_dispose(struct zerodds_ZeroDdsWriter *writer, const uint8_t *key_hash);
int zerodds_writer_unregister(struct zerodds_ZeroDdsWriter *writer, const uint8_t *key_hash);
int zerodds_writer_unregister_with_dispose(struct zerodds_ZeroDdsWriter *writer,
const uint8_t *key_hash);
void zerodds_writer_destroy(struct zerodds_ZeroDdsWriter *writer);
struct zerodds_ZeroDdsReader *zerodds_reader_create(struct zerodds_ZeroDdsRuntime *runtime,
const char *topic_name,
const char *type_name,
int reliable);
int zerodds_reader_take(struct zerodds_ZeroDdsReader *reader,
uint8_t **out_buf,
uintptr_t *out_len);
int zerodds_reader_wait_for_matched(struct zerodds_ZeroDdsReader *reader,
int min_count,
uint64_t timeout_ms);
void zerodds_reader_destroy(struct zerodds_ZeroDdsReader *reader);
int zerodds_reader_set_data_callback(struct zerodds_ZeroDdsReader *reader,
zerodds_Option_ZeroDdsDataCallback callback,
void *user_data);
void zerodds_buffer_free(uint8_t *buf, uintptr_t len);
int zerodds_writer_loan_message(struct zerodds_ZeroDdsWriter *writer,
uintptr_t len,
uint8_t **out_ptr,
uintptr_t *out_len);
int zerodds_writer_commit_loan(struct zerodds_ZeroDdsWriter *writer, uint8_t *ptr, uintptr_t len);
int zerodds_writer_discard_loan(struct zerodds_ZeroDdsWriter *_writer, uint8_t *ptr, uintptr_t len);
const char *zerodds_version(void);
int zerodds_dp_get_discovered_topics(struct zerodds_ZeroDdsDomainParticipant *p,
uint64_t *out,
uintptr_t *out_count,
uintptr_t cap);
int zerodds_dp_get_discovered_participant_data(struct zerodds_ZeroDdsDomainParticipant *p,
uint64_t handle,
struct zerodds_ZeroDdsParticipantBuiltinTopicData *out);
void zerodds_builtin_userdata_free(const uint8_t *p, uintptr_t len);
int zerodds_dp_get_discovered_topic_data(struct zerodds_ZeroDdsDomainParticipant *p,
uint64_t handle,
struct zerodds_ZeroDdsTopicBuiltinTopicData *out);
uintptr_t zerodds_dp_discovered_publications_count(struct zerodds_ZeroDdsDomainParticipant *p);
uintptr_t zerodds_dp_discovered_subscriptions_count(struct zerodds_ZeroDdsDomainParticipant *p);
bool zerodds_condition_get_trigger_value(const void *c);
struct zerodds_ZeroDdsGuardCondition *zerodds_guardcondition_create(void);
void zerodds_guardcondition_destroy(struct zerodds_ZeroDdsGuardCondition *g);
int zerodds_guardcondition_set_trigger_value(struct zerodds_ZeroDdsGuardCondition *g, bool v);
struct zerodds_ZeroDdsStatusCondition *zerodds_entity_get_statuscondition(void *entity);
int zerodds_statuscondition_set_enabled_statuses(struct zerodds_ZeroDdsStatusCondition *c,
uint32_t mask);
uint32_t zerodds_statuscondition_get_enabled_statuses(struct zerodds_ZeroDdsStatusCondition *c);
void zerodds_statuscondition_destroy(struct zerodds_ZeroDdsStatusCondition *c);
struct zerodds_ZeroDdsReadCondition *zerodds_dr_create_readcondition(struct zerodds_ZeroDdsDataReader *dr,
uint32_t sample_states,
uint32_t view_states,
uint32_t instance_states);
struct zerodds_ZeroDdsQueryCondition *zerodds_dr_create_querycondition(struct zerodds_ZeroDdsDataReader *dr,
uint32_t sample_states,
uint32_t view_states,
uint32_t instance_states,
const char *expr,
const char *const *params,
uintptr_t param_count);
int zerodds_dr_delete_readcondition(struct zerodds_ZeroDdsDataReader *_dr, void *c);
struct zerodds_ZeroDdsWaitSet *zerodds_waitset_create(void);
void zerodds_waitset_destroy(struct zerodds_ZeroDdsWaitSet *w);
int zerodds_waitset_attach_condition(struct zerodds_ZeroDdsWaitSet *w, void *cond);
int zerodds_waitset_detach_condition(struct zerodds_ZeroDdsWaitSet *w, void *cond);
int zerodds_waitset_wait(struct zerodds_ZeroDdsWaitSet *w,
void **out_active,
uintptr_t cap,
uintptr_t *out_count,
int32_t timeout_sec,
uint32_t timeout_nanosec);
int zerodds_waitset_get_conditions(struct zerodds_ZeroDdsWaitSet *w,
void **out,
uintptr_t cap,
uintptr_t *out_count);
struct zerodds_ZeroDdsTopic *zerodds_dp_lookup_topicdescription(struct zerodds_ZeroDdsDomainParticipant *p,
const char *name);
struct zerodds_ZeroDdsBuiltinSubscriber *zerodds_dp_get_builtin_subscriber(struct zerodds_ZeroDdsDomainParticipant *p);
void zerodds_builtin_subscriber_destroy(struct zerodds_ZeroDdsBuiltinSubscriber *bs);
int zerodds_dp_set_qos(struct zerodds_ZeroDdsDomainParticipant *p,
const struct zerodds_ZeroDdsDomainParticipantQos *qos);
int zerodds_dp_get_qos(struct zerodds_ZeroDdsDomainParticipant *p,
struct zerodds_ZeroDdsDomainParticipantQos *out);
int zerodds_dp_set_default_topic_qos(struct zerodds_ZeroDdsDomainParticipant *p,
const struct zerodds_ZeroDdsTopicQos *qos);
int zerodds_dp_get_default_topic_qos(struct zerodds_ZeroDdsDomainParticipant *p,
struct zerodds_ZeroDdsTopicQos *out);
int zerodds_dp_set_default_publisher_qos(struct zerodds_ZeroDdsDomainParticipant *p,
const struct zerodds_ZeroDdsPublisherQos *qos);
int zerodds_dp_get_default_publisher_qos(struct zerodds_ZeroDdsDomainParticipant *p,
struct zerodds_ZeroDdsPublisherQos *out);
int zerodds_dp_set_default_subscriber_qos(struct zerodds_ZeroDdsDomainParticipant *p,
const zerodds_ZeroDdsSubscriberQos *qos);
int zerodds_dp_get_default_subscriber_qos(struct zerodds_ZeroDdsDomainParticipant *p,
zerodds_ZeroDdsSubscriberQos *out);
int zerodds_pub_set_qos(struct zerodds_ZeroDdsPublisher *pub_,
const struct zerodds_ZeroDdsPublisherQos *qos);
int zerodds_pub_get_qos(struct zerodds_ZeroDdsPublisher *pub_,
struct zerodds_ZeroDdsPublisherQos *out);
int zerodds_pub_set_default_datawriter_qos(struct zerodds_ZeroDdsPublisher *pub_,
const struct zerodds_ZeroDdsDataWriterQos *qos);
int zerodds_pub_get_default_datawriter_qos(struct zerodds_ZeroDdsPublisher *pub_,
struct zerodds_ZeroDdsDataWriterQos *out);
int zerodds_pub_copy_from_topic_qos(struct zerodds_ZeroDdsPublisher *_pub,
struct zerodds_ZeroDdsDataWriterQos *dwqos_inout,
const struct zerodds_ZeroDdsTopicQos *tqos);
int zerodds_sub_set_qos(struct zerodds_ZeroDdsSubscriber *sub,
const zerodds_ZeroDdsSubscriberQos *qos);
int zerodds_sub_get_qos(struct zerodds_ZeroDdsSubscriber *sub, zerodds_ZeroDdsSubscriberQos *out);
int zerodds_sub_set_default_datareader_qos(struct zerodds_ZeroDdsSubscriber *sub,
const struct zerodds_ZeroDdsDataReaderQos *qos);
int zerodds_sub_get_default_datareader_qos(struct zerodds_ZeroDdsSubscriber *sub,
struct zerodds_ZeroDdsDataReaderQos *out);
int zerodds_sub_copy_from_topic_qos(struct zerodds_ZeroDdsSubscriber *_sub,
struct zerodds_ZeroDdsDataReaderQos *drqos_inout,
const struct zerodds_ZeroDdsTopicQos *tqos);
int zerodds_dw_set_qos(struct zerodds_ZeroDdsDataWriter *dw,
const struct zerodds_ZeroDdsDataWriterQos *qos);
int zerodds_dw_get_qos(struct zerodds_ZeroDdsDataWriter *dw,
struct zerodds_ZeroDdsDataWriterQos *out);
int zerodds_dr_set_qos(struct zerodds_ZeroDdsDataReader *dr,
const struct zerodds_ZeroDdsDataReaderQos *qos);
int zerodds_dr_get_qos(struct zerodds_ZeroDdsDataReader *dr,
struct zerodds_ZeroDdsDataReaderQos *out);
int zerodds_dw_register_instance(struct zerodds_ZeroDdsDataWriter *dw,
const uint8_t *key,
uintptr_t key_len,
uint64_t *out_handle);
int zerodds_dw_register_instance_w_timestamp(struct zerodds_ZeroDdsDataWriter *dw,
const uint8_t *key,
uintptr_t key_len,
int32_t _ts_sec,
uint32_t _ts_nanosec,
uint64_t *out_handle);
int zerodds_dw_unregister_instance(struct zerodds_ZeroDdsDataWriter *dw, uint64_t handle);
int zerodds_dw_unregister_instance_w_timestamp(struct zerodds_ZeroDdsDataWriter *dw,
uint64_t handle,
int32_t _ts_sec,
uint32_t _ts_nanosec);
int zerodds_dw_lookup_instance(struct zerodds_ZeroDdsDataWriter *_dw,
const uint8_t *key,
uintptr_t key_len,
uint64_t *out_handle);
int zerodds_dw_get_key_value(struct zerodds_ZeroDdsDataWriter *_dw,
uint64_t handle,
uint8_t *out_buf,
uintptr_t *inout_len);
int zerodds_dw_dispose_w_timestamp(struct zerodds_ZeroDdsDataWriter *dw,
const uint8_t *key_hash,
uint64_t handle,
int32_t _ts_sec,
uint32_t _ts_nanosec);
int zerodds_dw_get_matched_subscriptions(struct zerodds_ZeroDdsDataWriter *dw,
uint64_t *out_handles,
uintptr_t *out_count,
uintptr_t cap);
int zerodds_dw_get_matched_subscription_data(struct zerodds_ZeroDdsDataWriter *dw,
uint64_t handle,
struct zerodds_ZeroDdsSubscriptionBuiltinTopicData *out);
int zerodds_dw_loan_message(struct zerodds_ZeroDdsDataWriter *dw,
uintptr_t len,
uint8_t **out_ptr,
uintptr_t *out_len);
int zerodds_dw_commit_loan(struct zerodds_ZeroDdsDataWriter *dw, uint8_t *ptr, uintptr_t len);
int zerodds_dw_discard_loan(struct zerodds_ZeroDdsDataWriter *_dw, uint8_t *ptr, uintptr_t len);
int zerodds_dr_read_instance(struct zerodds_ZeroDdsDataReader *dr,
uint64_t handle,
struct zerodds_ZeroDdsSampleArray *out,
uintptr_t max,
uint32_t s,
uint32_t v,
uint32_t i);
int zerodds_dr_take_instance(struct zerodds_ZeroDdsDataReader *dr,
uint64_t handle,
struct zerodds_ZeroDdsSampleArray *out,
uintptr_t max,
uint32_t s,
uint32_t v,
uint32_t i);
int zerodds_dr_read_next_instance(struct zerodds_ZeroDdsDataReader *dr,
uint64_t prev_handle,
struct zerodds_ZeroDdsSampleArray *out,
uintptr_t max,
uint32_t s,
uint32_t v,
uint32_t i);
int zerodds_dr_take_next_instance(struct zerodds_ZeroDdsDataReader *dr,
uint64_t prev_handle,
struct zerodds_ZeroDdsSampleArray *out,
uintptr_t max,
uint32_t s,
uint32_t v,
uint32_t i);
int zerodds_dr_read_w_condition(struct zerodds_ZeroDdsDataReader *dr,
struct zerodds_ZeroDdsSampleArray *out,
uintptr_t max,
void *cond);
int zerodds_dr_take_w_condition(struct zerodds_ZeroDdsDataReader *dr,
struct zerodds_ZeroDdsSampleArray *out,
uintptr_t max,
void *cond);
int zerodds_dr_lookup_instance(struct zerodds_ZeroDdsDataReader *_dr,
const uint8_t *key,
uintptr_t key_len,
uint64_t *out_handle);
int zerodds_dr_get_key_value(struct zerodds_ZeroDdsDataReader *_dr,
uint64_t handle,
uint8_t *out_buf,
uintptr_t *inout_len);
int zerodds_dr_wait_for_historical_data(struct zerodds_ZeroDdsDataReader *dr,
int32_t _timeout_sec,
uint32_t _timeout_nanosec);
int zerodds_dr_get_matched_publications(struct zerodds_ZeroDdsDataReader *dr,
uint64_t *out_handles,
uintptr_t *out_count,
uintptr_t cap);
int zerodds_dr_get_matched_publication_data(struct zerodds_ZeroDdsDataReader *dr,
uint64_t handle,
struct zerodds_ZeroDdsPublicationBuiltinTopicData *out);
const struct zerodds_ZeroDdsDomainParticipantFactory *zerodds_dpf_get_instance(void);
struct zerodds_ZeroDdsDomainParticipant *zerodds_dpf_create_participant(const struct zerodds_ZeroDdsDomainParticipantFactory *f,
uint32_t domain_id,
const struct zerodds_ZeroDdsDomainParticipantQos *qos);
int zerodds_dpf_delete_participant(const struct zerodds_ZeroDdsDomainParticipantFactory *f,
struct zerodds_ZeroDdsDomainParticipant *p);
struct zerodds_ZeroDdsDomainParticipant *zerodds_dpf_lookup_participant(const struct zerodds_ZeroDdsDomainParticipantFactory *f,
uint32_t domain_id);
int zerodds_dpf_set_default_participant_qos(const struct zerodds_ZeroDdsDomainParticipantFactory *f,
const struct zerodds_ZeroDdsDomainParticipantQos *qos);
int zerodds_dpf_get_default_participant_qos(const struct zerodds_ZeroDdsDomainParticipantFactory *f,
struct zerodds_ZeroDdsDomainParticipantQos *out);
int zerodds_dpf_set_qos(const struct zerodds_ZeroDdsDomainParticipantFactory *f,
const struct zerodds_ZeroDdsDomainParticipantFactoryQos *qos);
int zerodds_dpf_get_qos(const struct zerodds_ZeroDdsDomainParticipantFactory *f,
struct zerodds_ZeroDdsDomainParticipantFactoryQos *out);
int zerodds_dp_set_listener(struct zerodds_ZeroDdsDomainParticipant *p,
const struct zerodds_ZeroDdsDomainParticipantListener *l,
uint32_t status_mask);
int zerodds_pub_set_listener(struct zerodds_ZeroDdsPublisher *pub_,
const struct zerodds_ZeroDdsPublisherListener *l,
uint32_t status_mask);
int zerodds_sub_set_listener(struct zerodds_ZeroDdsSubscriber *sub,
const struct zerodds_ZeroDdsSubscriberListener *l,
uint32_t status_mask);
int zerodds_topic_set_listener(struct zerodds_ZeroDdsTopic *t,
const struct zerodds_ZeroDdsTopicListener *l,
uint32_t status_mask);
int zerodds_dw_set_listener(struct zerodds_ZeroDdsDataWriter *dw,
const struct zerodds_ZeroDdsDataWriterListener *l,
uint32_t status_mask);
int zerodds_dr_set_listener(struct zerodds_ZeroDdsDataReader *dr,
const struct zerodds_ZeroDdsDataReaderListener *l,
uint32_t status_mask);
const struct zerodds_ZeroDdsDomainParticipantListener *zerodds_dp_get_listener(struct zerodds_ZeroDdsDomainParticipant *p);
const struct zerodds_ZeroDdsDataWriterListener *zerodds_dw_get_listener(struct zerodds_ZeroDdsDataWriter *dw);
const struct zerodds_ZeroDdsDataReaderListener *zerodds_dr_get_listener(struct zerodds_ZeroDdsDataReader *dr);
uintptr_t zerodds_poll_listeners(void);
struct zerodds_ZeroDdsTopic *zerodds_dp_create_topic(struct zerodds_ZeroDdsDomainParticipant *p,
const char *name,
const char *type_name,
const struct zerodds_ZeroDdsTopicQos *qos);
int zerodds_dp_delete_topic(struct zerodds_ZeroDdsDomainParticipant *p,
struct zerodds_ZeroDdsTopic *t);
struct zerodds_ZeroDdsTopic *zerodds_dp_find_topic(struct zerodds_ZeroDdsDomainParticipant *p,
const char *name);
struct zerodds_ZeroDdsPublisher *zerodds_dp_create_publisher(struct zerodds_ZeroDdsDomainParticipant *p,
const struct zerodds_ZeroDdsPublisherQos *qos);
int zerodds_dp_delete_publisher(struct zerodds_ZeroDdsDomainParticipant *p,
struct zerodds_ZeroDdsPublisher *pubh);
struct zerodds_ZeroDdsSubscriber *zerodds_dp_create_subscriber(struct zerodds_ZeroDdsDomainParticipant *p,
const zerodds_ZeroDdsSubscriberQos *qos);
int zerodds_dp_delete_subscriber(struct zerodds_ZeroDdsDomainParticipant *p,
struct zerodds_ZeroDdsSubscriber *sub);
struct zerodds_ZeroDdsContentFilteredTopic *zerodds_dp_create_contentfilteredtopic(struct zerodds_ZeroDdsDomainParticipant *p,
const char *name,
struct zerodds_ZeroDdsTopic *related,
const char *filter_expression,
const char *const *parameters,
uintptr_t param_count);
int zerodds_dp_delete_contentfilteredtopic(struct zerodds_ZeroDdsDomainParticipant *p,
struct zerodds_ZeroDdsContentFilteredTopic *cft);
int zerodds_dp_ignore_participant(struct zerodds_ZeroDdsDomainParticipant *p, uint64_t handle);
int zerodds_dp_ignore_topic(struct zerodds_ZeroDdsDomainParticipant *p, uint64_t handle);
int zerodds_dp_ignore_publication(struct zerodds_ZeroDdsDomainParticipant *p, uint64_t handle);
int zerodds_dp_ignore_subscription(struct zerodds_ZeroDdsDomainParticipant *p, uint64_t handle);
uint32_t zerodds_dp_get_domain_id(struct zerodds_ZeroDdsDomainParticipant *p);
int zerodds_dp_assert_liveliness(struct zerodds_ZeroDdsDomainParticipant *p);
int zerodds_dp_delete_contained_entities(struct zerodds_ZeroDdsDomainParticipant *p);
int zerodds_dp_contains_entity(struct zerodds_ZeroDdsDomainParticipant *p, uint64_t handle);
int zerodds_dp_get_discovered_participants(struct zerodds_ZeroDdsDomainParticipant *p,
uint64_t *out_handles,
uintptr_t *out_count,
uintptr_t cap);
struct zerodds_ZeroDdsDomainParticipant *zerodds_pub_get_participant(struct zerodds_ZeroDdsPublisher *pub_);
int zerodds_pub_suspend_publications(struct zerodds_ZeroDdsPublisher *pub_);
int zerodds_pub_resume_publications(struct zerodds_ZeroDdsPublisher *pub_);
int zerodds_pub_begin_coherent_changes(struct zerodds_ZeroDdsPublisher *pub_);
int zerodds_pub_end_coherent_changes(struct zerodds_ZeroDdsPublisher *pub_);
int zerodds_pub_wait_for_acknowledgments(struct zerodds_ZeroDdsPublisher *pub_,
uint64_t timeout_ms);
struct zerodds_ZeroDdsDataWriter *zerodds_pub_create_datawriter(struct zerodds_ZeroDdsPublisher *pub_,
struct zerodds_ZeroDdsTopic *topic,
const struct zerodds_ZeroDdsDataWriterQos *qos);
int zerodds_pub_delete_datawriter(struct zerodds_ZeroDdsPublisher *pub_,
struct zerodds_ZeroDdsDataWriter *dw);
struct zerodds_ZeroDdsDataWriter *zerodds_pub_lookup_datawriter(struct zerodds_ZeroDdsPublisher *pub_,
const char *topic_name);
int zerodds_pub_delete_contained_entities(struct zerodds_ZeroDdsPublisher *pub_);
struct zerodds_ZeroDdsTopic *zerodds_dw_get_topic(struct zerodds_ZeroDdsDataWriter *dw);
struct zerodds_ZeroDdsPublisher *zerodds_dw_get_publisher(struct zerodds_ZeroDdsDataWriter *dw);
int zerodds_dw_write(struct zerodds_ZeroDdsDataWriter *dw,
const uint8_t *payload,
uintptr_t len,
uint64_t _handle);
int zerodds_dw_write_w_timestamp(struct zerodds_ZeroDdsDataWriter *dw,
const uint8_t *payload,
uintptr_t len,
uint64_t handle,
int32_t _ts_sec,
uint32_t _ts_nanosec);
int zerodds_dw_dispose(struct zerodds_ZeroDdsDataWriter *dw,
const uint8_t *key_hash,
uint64_t _handle);
int zerodds_dw_wait_for_acknowledgments(struct zerodds_ZeroDdsDataWriter *dw, uint64_t timeout_ms);
int zerodds_dw_assert_liveliness(struct zerodds_ZeroDdsDataWriter *dw);
int zerodds_dw_wait_for_matched(struct zerodds_ZeroDdsDataWriter *dw,
int32_t min,
uint64_t timeout_ms);
int zerodds_dw_get_liveliness_lost_status(struct zerodds_ZeroDdsDataWriter *dw,
struct zerodds_ZeroDdsLivelinessLostStatus *out);
int zerodds_dw_get_offered_deadline_missed_status(struct zerodds_ZeroDdsDataWriter *dw,
struct zerodds_ZeroDdsOfferedDeadlineMissedStatus *out);
int zerodds_dw_get_offered_incompatible_qos_status(struct zerodds_ZeroDdsDataWriter *dw,
struct zerodds_ZeroDdsOfferedIncompatibleQosStatus *out);
int zerodds_dw_get_publication_matched_status(struct zerodds_ZeroDdsDataWriter *dw,
struct zerodds_ZeroDdsPublicationMatchedStatus *out);
struct zerodds_ZeroDdsDomainParticipant *zerodds_sub_get_participant(struct zerodds_ZeroDdsSubscriber *sub);
int zerodds_sub_begin_access(struct zerodds_ZeroDdsSubscriber *sub);
int zerodds_sub_end_access(struct zerodds_ZeroDdsSubscriber *sub);
int zerodds_sub_get_datareaders(struct zerodds_ZeroDdsSubscriber *sub,
struct zerodds_ZeroDdsDataReader **out,
uintptr_t *out_count,
uintptr_t cap);
int zerodds_sub_notify_datareaders(struct zerodds_ZeroDdsSubscriber *sub);
struct zerodds_ZeroDdsDataReader *zerodds_sub_create_datareader(struct zerodds_ZeroDdsSubscriber *sub,
struct zerodds_ZeroDdsTopic *topic,
const struct zerodds_ZeroDdsDataReaderQos *qos);
struct zerodds_ZeroDdsDataReader *zerodds_sub_create_datareader_with_cft(struct zerodds_ZeroDdsSubscriber *sub,
struct zerodds_ZeroDdsContentFilteredTopic *cft,
const struct zerodds_ZeroDdsDataReaderQos *qos);
int zerodds_sub_delete_datareader(struct zerodds_ZeroDdsSubscriber *sub,
struct zerodds_ZeroDdsDataReader *dr);
struct zerodds_ZeroDdsDataReader *zerodds_sub_lookup_datareader(struct zerodds_ZeroDdsSubscriber *sub,
const char *topic_name);
int zerodds_sub_delete_contained_entities(struct zerodds_ZeroDdsSubscriber *sub);
struct zerodds_ZeroDdsTopic *zerodds_dr_get_topicdescription(struct zerodds_ZeroDdsDataReader *dr);
struct zerodds_ZeroDdsSubscriber *zerodds_dr_get_subscriber(struct zerodds_ZeroDdsDataReader *dr);
int zerodds_dr_take(struct zerodds_ZeroDdsDataReader *dr,
struct zerodds_ZeroDdsSampleArray *out,
uintptr_t max_samples,
uint32_t _sample_states,
uint32_t _view_states,
uint32_t _instance_states);
int zerodds_dr_read(struct zerodds_ZeroDdsDataReader *dr,
struct zerodds_ZeroDdsSampleArray *out,
uintptr_t max_samples,
uint32_t _sample_states,
uint32_t _view_states,
uint32_t _instance_states);
int zerodds_dr_take_next_sample(struct zerodds_ZeroDdsDataReader *dr,
uint8_t **out_buf,
uintptr_t *out_len,
struct zerodds_ZeroDdsSampleInfo *out_info);
int zerodds_dr_read_next_sample(struct zerodds_ZeroDdsDataReader *dr,
uint8_t **out_buf,
uintptr_t *out_len,
struct zerodds_ZeroDdsSampleInfo *out_info);
int zerodds_dr_return_loan(struct zerodds_ZeroDdsDataReader *_dr,
struct zerodds_ZeroDdsSampleArray *arr);
int zerodds_dr_wait_for_matched(struct zerodds_ZeroDdsDataReader *dr,
int32_t min,
uint64_t timeout_ms);
int zerodds_dr_get_liveliness_changed_status(struct zerodds_ZeroDdsDataReader *dr,
struct zerodds_ZeroDdsLivelinessChangedStatus *out);
int zerodds_dr_get_subscription_matched_status(struct zerodds_ZeroDdsDataReader *dr,
struct zerodds_ZeroDdsSubscriptionMatchedStatus *out);
int zerodds_dr_get_requested_deadline_missed_status(struct zerodds_ZeroDdsDataReader *dr,
struct zerodds_ZeroDdsRequestedDeadlineMissedStatus *out);
int zerodds_dr_get_requested_incompatible_qos_status(struct zerodds_ZeroDdsDataReader *dr,
struct zerodds_ZeroDdsRequestedIncompatibleQosStatus *out);
int zerodds_dr_get_sample_lost_status(struct zerodds_ZeroDdsDataReader *dr,
struct zerodds_ZeroDdsSampleLostStatus *out);
int zerodds_dr_get_sample_rejected_status(struct zerodds_ZeroDdsDataReader *dr,
struct zerodds_ZeroDdsSampleRejectedStatus *out);
char *zerodds_topic_get_name(struct zerodds_ZeroDdsTopic *t);
char *zerodds_topic_get_type_name(struct zerodds_ZeroDdsTopic *t);
struct zerodds_ZeroDdsDomainParticipant *zerodds_topic_get_participant(struct zerodds_ZeroDdsTopic *t);
void zerodds_string_free(char *s);
int zerodds_topic_get_qos(struct zerodds_ZeroDdsTopic *t, struct zerodds_ZeroDdsTopicQos *out);
int zerodds_topic_set_qos(struct zerodds_ZeroDdsTopic *t,
const struct zerodds_ZeroDdsTopicQos *qos);
int zerodds_topic_get_inconsistent_topic_status(struct zerodds_ZeroDdsTopic *t,
struct zerodds_ZeroDdsInconsistentTopicStatus *out);
int zerodds_topic_create_typed(struct zerodds_ZeroDdsRuntime *participant,
const char *topic_name,
const struct zerodds_ZeroDdsTypeSupport *type_support,
struct zerodds_ZeroDdsTopic **out_topic);
void zerodds_topic_destroy_typed(struct zerodds_ZeroDdsTopic *topic);
int zerodds_xcdr2_encode(const struct zerodds_ZeroDdsTypeSupport *ts,
const void *sample,
uint8_t *out_buf,
uintptr_t out_cap,
uintptr_t *out_len);
int zerodds_xcdr2_decode(const struct zerodds_ZeroDdsTypeSupport *ts,
const uint8_t *buf,
uintptr_t len,
void *out_sample);
int zerodds_writer_write_typed(struct zerodds_ZeroDdsWriter *writer,
const struct zerodds_ZeroDdsTypeSupport *ts,
const void *sample);
int zerodds_reader_take_typed(struct zerodds_ZeroDdsReader *reader,
const struct zerodds_ZeroDdsTypeSupport *ts,
void *out_sample,
void *out_info);
#ifdef __cplusplus
} #endif
#endif