
Missing prototypes for exported functions cause a really huge issue on Windows. Enabling the "missing prototypes" warning makes it much easier to catch this problem. Naturally, any warnings caused by this have been fixed. Signed-off-by: Erik Boasson <eb@ilities.com>
130 lines
7.2 KiB
C
130 lines
7.2 KiB
C
/*
|
|
* Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
|
|
*
|
|
* This program and the accompanying materials are made available under the
|
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
* http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
|
|
* v. 1.0 which is available at
|
|
* http://www.eclipse.org/org/documents/edl-v10.php.
|
|
*
|
|
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
|
|
*/
|
|
#ifndef COMMON_H
|
|
#define COMMON_H
|
|
|
|
#include "dds/dds.h"
|
|
#include <assert.h>
|
|
|
|
#define DDS_USERDATA_QOS_POLICY_NAME "UserData"
|
|
#define DDS_DURABILITY_QOS_POLICY_NAME "Durability"
|
|
#define DDS_PRESENTATION_QOS_POLICY_NAME "Presentation"
|
|
#define DDS_DEADLINE_QOS_POLICY_NAME "Deadline"
|
|
#define DDS_LATENCYBUDGET_QOS_POLICY_NAME "LatencyBudget"
|
|
#define DDS_OWNERSHIP_QOS_POLICY_NAME "Ownership"
|
|
#define DDS_OWNERSHIPSTRENGTH_QOS_POLICY_NAME "OwnershipStrength"
|
|
#define DDS_LIVELINESS_QOS_POLICY_NAME "Liveliness"
|
|
#define DDS_TIMEBASEDFILTER_QOS_POLICY_NAME "TimeBasedFilter"
|
|
#define DDS_PARTITION_QOS_POLICY_NAME "Partition"
|
|
#define DDS_RELIABILITY_QOS_POLICY_NAME "Reliability"
|
|
#define DDS_DESTINATIONORDER_QOS_POLICY_NAME "DestinationOrder"
|
|
#define DDS_HISTORY_QOS_POLICY_NAME "History"
|
|
#define DDS_RESOURCELIMITS_QOS_POLICY_NAME "ResourceLimits"
|
|
#define DDS_ENTITYFACTORY_QOS_POLICY_NAME "EntityFactory"
|
|
#define DDS_WRITERDATALIFECYCLE_QOS_POLICY_NAME "WriterDataLifecycle"
|
|
#define DDS_READERDATALIFECYCLE_QOS_POLICY_NAME "ReaderDataLifecycle"
|
|
#define DDS_TOPICDATA_QOS_POLICY_NAME "TopicData"
|
|
#define DDS_GROUPDATA_QOS_POLICY_NAME "GroupData"
|
|
#define DDS_TRANSPORTPRIORITY_QOS_POLICY_NAME "TransportPriority"
|
|
#define DDS_LIFESPAN_QOS_POLICY_NAME "Lifespan"
|
|
#define DDS_DURABILITYSERVICE_QOS_POLICY_NAME "DurabilityService"
|
|
#define DDS_SUBSCRIPTIONKEY_QOS_POLICY_NAME "SubscriptionKey"
|
|
#define DDS_VIEWKEY_QOS_POLICY_NAME "ViewKey"
|
|
#define DDS_READERLIFESPAN_QOS_POLICY_NAME "ReaderLifespan"
|
|
#define DDS_SHARE_QOS_POLICY_NAME "Share"
|
|
#define DDS_SCHEDULING_QOS_POLICY_NAME "Scheduling"
|
|
|
|
#define DDS_SUBSCRIPTIONKEY_QOS_POLICY_ID 23
|
|
#define DDS_VIEWKEY_QOS_POLICY_ID 24
|
|
#define DDS_READERLIFESPAN_QOS_POLICY_ID 25
|
|
#define DDS_SHARE_QOS_POLICY_ID 26
|
|
#define DDS_SCHEDULING_QOS_POLICY_ID 27
|
|
|
|
extern dds_entity_t dp;
|
|
extern const dds_topic_descriptor_t *ts_KeyedSeq;
|
|
extern const dds_topic_descriptor_t *ts_Keyed32;
|
|
extern const dds_topic_descriptor_t *ts_Keyed64;
|
|
extern const dds_topic_descriptor_t *ts_Keyed128;
|
|
extern const dds_topic_descriptor_t *ts_Keyed256;
|
|
extern const dds_topic_descriptor_t *ts_OneULong;
|
|
extern const char *saved_argv0;
|
|
extern const char *qos_arg_usagestr;
|
|
|
|
//#define BINS_LENGTH (8 * sizeof(unsigned long long) + 1)
|
|
|
|
//void nowll_as_ddstime(DDS_Time_t *t);
|
|
//void bindelta(unsigned long long *bins, unsigned long long d, unsigned repeat);
|
|
//void binprint(unsigned long long *bins, unsigned long long telapsed);
|
|
|
|
struct hist;
|
|
struct hist *hist_new(unsigned nbins, uint64_t binwidth, uint64_t bin0);
|
|
void hist_free(struct hist *h);
|
|
void hist_reset_minmax(struct hist *h);
|
|
void hist_reset(struct hist *h);
|
|
void hist_record(struct hist *h, uint64_t x, unsigned weight);
|
|
void hist_print(struct hist *h, dds_time_t dt, int reset);
|
|
|
|
void error(const char *fmt, ...);
|
|
#define error_abort(rc, ...) if (rc < DDS_RETCODE_OK) { error(__VA_ARGS__); DDS_ERR_CHECK(rc, DDS_CHECK_FAIL); }
|
|
#define error_report(rc, ...) if (rc < DDS_RETCODE_OK) { error(__VA_ARGS__); DDS_ERR_CHECK(rc, DDS_CHECK_REPORT); }
|
|
#define error_return(rc, ...) if (rc < DDS_RETCODE_OK) { error_report(rc, __VA_ARGS__); return; }
|
|
#define error_exit(...) { error(__VA_ARGS__); exit(2); }
|
|
#define os_error_exit(osres, ...) if (osres != DDS_RETCODE_OK) { error(__VA_ARGS__); exit(2); }
|
|
|
|
void save_argv0(const char *argv0);
|
|
int common_init(const char *argv0);
|
|
void common_fini(void);
|
|
int change_publisher_partitions(dds_entity_t pub, unsigned npartitions, const char *partitions[]);
|
|
int change_subscriber_partitions(dds_entity_t sub, unsigned npartitions, const char *partitions[]);
|
|
dds_entity_t new_publisher(dds_qos_t *q, unsigned npartitions, const char **partitions);
|
|
dds_entity_t new_subscriber(dds_qos_t *q, unsigned npartitions, const char **partitions);
|
|
dds_qos_t *new_tqos(void);
|
|
dds_qos_t *new_rdqos(dds_entity_t tp);
|
|
dds_qos_t *new_wrqos(dds_entity_t tp);
|
|
void set_infinite_dds_duration(dds_duration_t *dd);
|
|
int double_to_dds_duration(dds_duration_t *dd, double d);
|
|
dds_entity_t new_topic(const char *name, const dds_topic_descriptor_t *topicDesc, const dds_qos_t *q);
|
|
dds_entity_t new_datawriter(const dds_entity_t pub, const dds_entity_t tp, const dds_qos_t *q);
|
|
dds_entity_t new_datareader(const dds_entity_t sub, const dds_entity_t tp, const dds_qos_t *q);
|
|
dds_entity_t new_datawriter_listener(const dds_entity_t pub, const dds_entity_t tp, const dds_qos_t *q, const dds_listener_t *l);
|
|
dds_entity_t new_datareader_listener(const dds_entity_t sub, const dds_entity_t tp, const dds_qos_t *q, const dds_listener_t *l);
|
|
void qos_liveliness(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_deadline(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_durability(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_history(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_destination_order(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_ownership(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_transport_priority(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_reliability(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_resource_limits(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_durability_service(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_user_data(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_latency_budget(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_lifespan(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_presentation(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void qos_autodispose_unregistered_instances(dds_entity_kind_t qt, dds_qos_t *q, const char *arg);
|
|
void set_qosprovider(const char *arg);
|
|
void setqos_from_args(dds_entity_kind_t qt, dds_qos_t *q, int n, const char *args[]);
|
|
|
|
bool dds_err_check (dds_return_t err, unsigned flags, const char *where);
|
|
|
|
#define DDS_CHECK_REPORT 0x01
|
|
#define DDS_CHECK_FAIL 0x02
|
|
#define DDS_CHECK_EXIT 0x04
|
|
|
|
#define dds_err_str(x) (dds_strretcode(x))
|
|
|
|
#define DDS_TO_STRING(n) #n
|
|
#define DDS_INT_TO_STRING(n) DDS_TO_STRING(n)
|
|
#define DDS_ERR_CHECK(e, f) (dds_err_check ((e), (f), __FILE__ ":" DDS_INT_TO_STRING(__LINE__)))
|
|
|
|
#endif
|