cyclonedds/src/tools/pubsub/common.h
Erik Boasson 32b683bf37 Enable "missing prototypes" warning for gcc, clang
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>
2019-06-13 12:54:35 +02:00

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