make internal header files more C++ friendly
Generally one doesn't need to include any internal header files in an application, but the (unstable) interface for application-defined sample representation and serialization does require including some. It turns out a keyword clash had to be resolved (typename => type_name) and that a whole bunch of them were missing the #ifdef __cplusplus / extern "C" bit. It further turned out that one had to pull in nearly all of the type definitions, including some typedefs that are illegal in C++, e.g., typedef struct os_sockWaitset *os_sockWaitset; C++ is right to forbid this, but Cyclone's header files were wrong to force inclusion of so much irrelevant stuff. This commit leaves these typedefs in place, but eliminates a few header file inclusions to avoid the problem. Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
parent
d2ebbbc880
commit
b686ba858c
56 changed files with 345 additions and 60 deletions
|
@ -14,10 +14,18 @@
|
|||
|
||||
#include "dds__entity.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
dds_guardcond*
|
||||
dds_create_guardcond(
|
||||
dds_participant *pp);
|
||||
|
||||
DEFINE_ENTITY_LOCK_UNLOCK(inline, dds_guardcond, DDS_KIND_COND_GUARD)
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -14,6 +14,10 @@
|
|||
|
||||
#include "dds__entity.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
dds_readcond *
|
||||
dds_create_readcond(
|
||||
dds_reader *rd,
|
||||
|
@ -21,4 +25,8 @@ dds_create_readcond(
|
|||
uint32_t mask,
|
||||
dds_querycondition_filter_fn filter);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -16,6 +16,10 @@
|
|||
#include "dds/ddsi/ddsi_serdata.h"
|
||||
#include "dds/ddsi/ddsi_sertopic.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct ddsi_serdata_builtintopic {
|
||||
struct ddsi_serdata c;
|
||||
nn_guid_t key;
|
||||
|
@ -39,4 +43,8 @@ extern const struct ddsi_serdata_ops ddsi_serdata_ops_builtintopic;
|
|||
|
||||
struct ddsi_sertopic *new_sertopic_builtintopic (enum ddsi_sertopic_builtintopic_type type, const char *name, const char *typename);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include "dds/ddsi/q_entity.h"
|
||||
#include "dds/ddsi/q_config.h"
|
||||
#include "dds/ddsi/q_gc.h"
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
#include "dds/version.h"
|
||||
|
||||
#define DOMAIN_ID_MIN 0
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#include "dds/ddsi/ddsi_serdata.h"
|
||||
#include "dds/ddsi/q_entity.h"
|
||||
#include "dds/ddsi/q_thread.h"
|
||||
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
|
||||
dds_return_t
|
||||
dds_writedispose(
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "dds/ddsi/q_thread.h"
|
||||
#include "dds/ddsi/q_ephash.h"
|
||||
#include "dds/ddsi/q_entity.h"
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
#include "dds/ddsi/ddsi_sertopic.h"
|
||||
|
||||
static dds_retcode_t dds_read_lock (dds_entity_t hdl, dds_reader **reader, dds_readcond **condition, bool only_reader)
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "dds__topic.h"
|
||||
#include "dds/ddsi/q_entity.h"
|
||||
#include "dds/ddsi/q_thread.h"
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
#include "dds__builtin.h"
|
||||
#include "dds/ddsi/ddsi_sertopic.h"
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ static void set_topic_type_from_sertopic (struct ddsi_serdata_builtintopic *d, c
|
|||
}
|
||||
if (!(d->xqos.present & QP_TYPE_NAME))
|
||||
{
|
||||
d->xqos.type_name = dds_string_dup (tp->typename);
|
||||
d->xqos.type_name = dds_string_dup (tp->type_name);
|
||||
d->xqos.present |= QP_TYPE_NAME;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "dds/ddsi/q_config.h"
|
||||
#include "dds/ddsi/q_freelist.h"
|
||||
#include "dds/ddsi/ddsi_sertopic.h"
|
||||
#include "dds/ddsi/ddsi_iid.h"
|
||||
#include "dds__serdata_builtintopic.h"
|
||||
|
||||
/* FIXME: sertopic /= ddstopic so a lot of stuff needs to be moved here from dds_topic.c and the free function needs to be implemented properly */
|
||||
|
@ -30,10 +31,10 @@ struct ddsi_sertopic *new_sertopic_builtintopic (enum ddsi_sertopic_builtintopic
|
|||
struct ddsi_sertopic_builtintopic *tp = ddsrt_malloc (sizeof (*tp));
|
||||
tp->c.iid = ddsi_iid_gen();
|
||||
tp->c.name = dds_string_dup (name);
|
||||
tp->c.typename = dds_string_dup (typename);
|
||||
const size_t name_typename_size = strlen (tp->c.name) + 1 + strlen (tp->c.typename) + 1;
|
||||
tp->c.name_typename = dds_alloc (name_typename_size);
|
||||
snprintf (tp->c.name_typename, name_typename_size, "%s/%s", tp->c.name, tp->c.typename);
|
||||
tp->c.type_name = dds_string_dup (typename);
|
||||
const size_t name_typename_size = strlen (tp->c.name) + 1 + strlen (tp->c.type_name) + 1;
|
||||
tp->c.name_type_name = dds_alloc (name_typename_size);
|
||||
snprintf (tp->c.name_type_name, name_typename_size, "%s/%s", tp->c.name, tp->c.type_name);
|
||||
tp->c.ops = &ddsi_sertopic_ops_builtintopic;
|
||||
tp->c.serdata_ops = &ddsi_serdata_ops_builtintopic;
|
||||
tp->c.serdata_basehash = ddsi_sertopic_compute_serdata_basehash (tp->c.serdata_ops);
|
||||
|
|
|
@ -35,7 +35,7 @@ DECL_ENTITY_LOCK_UNLOCK(extern inline, dds_topic)
|
|||
const ddsrt_avl_treedef_t dds_topictree_def = DDSRT_AVL_TREEDEF_INITIALIZER_INDKEY
|
||||
(
|
||||
offsetof (struct ddsi_sertopic, avlnode),
|
||||
offsetof (struct ddsi_sertopic, name_typename),
|
||||
offsetof (struct ddsi_sertopic, name_type_name),
|
||||
(int (*) (const void *, const void *)) strcmp,
|
||||
0
|
||||
);
|
||||
|
@ -285,7 +285,7 @@ static bool dupdef_qos_ok(const dds_qos_t *qos, const struct ddsi_sertopic *st)
|
|||
|
||||
static bool sertopic_equivalent (const struct ddsi_sertopic *a, const struct ddsi_sertopic *b)
|
||||
{
|
||||
if (strcmp (a->name_typename, b->name_typename) != 0)
|
||||
if (strcmp (a->name_type_name, b->name_type_name) != 0)
|
||||
return false;
|
||||
if (a->serdata_basehash != b->serdata_basehash)
|
||||
return false;
|
||||
|
@ -447,9 +447,9 @@ dds_create_topic(
|
|||
st->c.iid = ddsi_iid_gen ();
|
||||
st->c.status_cb = dds_topic_status_cb;
|
||||
st->c.status_cb_entity = NULL; /* set by dds_create_topic_arbitrary */
|
||||
st->c.name_typename = key;
|
||||
st->c.name_type_name = key;
|
||||
st->c.name = dds_string_dup (name);
|
||||
st->c.typename = dds_string_dup (typename);
|
||||
st->c.type_name = dds_string_dup (typename);
|
||||
st->c.ops = &ddsi_sertopic_ops_default;
|
||||
st->c.serdata_ops = desc->m_nkeys ? &ddsi_serdata_ops_cdr : &ddsi_serdata_ops_cdr_nokey;
|
||||
st->c.serdata_basehash = ddsi_sertopic_compute_serdata_basehash (st->c.serdata_ops);
|
||||
|
@ -471,7 +471,7 @@ dds_create_topic(
|
|||
|
||||
/* Set Topic meta data (for SEDP publication) */
|
||||
plist.qos.topic_name = dds_string_dup (st->c.name);
|
||||
plist.qos.type_name = dds_string_dup (st->c.typename);
|
||||
plist.qos.type_name = dds_string_dup (st->c.type_name);
|
||||
plist.qos.present |= (QP_TOPIC_NAME | QP_TYPE_NAME);
|
||||
if (desc->m_meta) {
|
||||
plist.type_description = dds_string_dup (desc->m_meta);
|
||||
|
@ -643,7 +643,7 @@ dds_get_type_name(
|
|||
ret = DDS_ERRNO(rc);
|
||||
goto fail;
|
||||
}
|
||||
(void)snprintf(name, size, "%s", t->m_stopic->typename);
|
||||
(void)snprintf(name, size, "%s", t->m_stopic->type_name);
|
||||
dds_topic_unlock(t);
|
||||
ret = DDS_RETCODE_OK;
|
||||
fail:
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "dds/ddsi/q_time.h"
|
||||
#include "dds/ddsi/q_rtps.h"
|
||||
#include "dds/ddsi/q_freelist.h"
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
|
||||
#define USE_EHH 0
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "dds/dds.h"
|
||||
#include "dds/version.h"
|
||||
#include "dds/ddsi/q_config.h"
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
#include "dds/ddsi/q_entity.h"
|
||||
#include "dds/ddsi/q_thread.h"
|
||||
#include "dds/ddsi/q_xmsg.h"
|
||||
|
|
|
@ -14,11 +14,19 @@
|
|||
|
||||
#include "dds/ddsi/ddsi_tran.h"
|
||||
|
||||
enum ddsi_nearby_address_result ddsi_ipaddr_is_nearby_address (ddsi_tran_factory_t tran, const nn_locator_t *loc, size_t ninterf, const struct nn_interface interf[]);
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum ddsi_nearby_address_result ddsi_ipaddr_is_nearby_address (ddsi_tran_factory_t tran, const nn_locator_t *loc, size_t ninterf, const struct nn_interface *interf);
|
||||
enum ddsi_locator_from_string_result ddsi_ipaddr_from_string (ddsi_tran_factory_t tran, nn_locator_t *loc, const char *str, int32_t kind);
|
||||
int ddsi_ipaddr_compare (const struct sockaddr *const sa1, const struct sockaddr *const sa2);
|
||||
char *ddsi_ipaddr_to_string (ddsi_tran_factory_t tran, char *dst, size_t sizeof_dst, const nn_locator_t *loc, int with_port);
|
||||
void ddsi_ipaddr_to_loc (nn_locator_t *dst, const struct sockaddr *src, int32_t kind);
|
||||
void ddsi_ipaddr_from_loc (struct sockaddr_storage *dst, const nn_locator_t *src);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -14,6 +14,10 @@
|
|||
|
||||
#include "dds/ddsi/ddsi_tran.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct nn_group_membership;
|
||||
|
||||
struct nn_group_membership *new_group_membership (void);
|
||||
|
@ -23,4 +27,8 @@ int ddsi_leave_mc (ddsi_tran_conn_t conn, const nn_locator_t *srcip, const nn_lo
|
|||
void ddsi_transfer_group_membership (ddsi_tran_conn_t conn, ddsi_tran_conn_t newconn);
|
||||
int ddsi_rejoin_transferred_mcgroups (ddsi_tran_conn_t conn);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -12,6 +12,14 @@
|
|||
#ifndef DDSI_RAWETH_H
|
||||
#define DDSI_RAWETH_H
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int ddsi_raweth_init (void);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -12,6 +12,10 @@
|
|||
#ifndef DDSI_RHC_PLUGIN_H
|
||||
#define DDSI_RHC_PLUGIN_H
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct rhc;
|
||||
struct nn_xqos;
|
||||
struct ddsi_tkmap_instance;
|
||||
|
@ -42,4 +46,8 @@ struct ddsi_rhc_plugin
|
|||
|
||||
DDS_EXPORT void make_proxy_writer_info(struct proxy_writer_info *pwr_info, const struct entity_common *e, const struct nn_xqos *xqos);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -16,6 +16,10 @@
|
|||
#include "dds/ddsi/q_time.h"
|
||||
#include "dds/ddsi/ddsi_sertopic.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct nn_rdata;
|
||||
struct nn_keyhash;
|
||||
|
||||
|
@ -40,37 +44,62 @@ struct ddsi_serdata {
|
|||
nn_mtime_t twrite; /* write time, not source timestamp, set post-throttling */
|
||||
};
|
||||
|
||||
/* Serialised size of sample: uint32_t because the protocol can't handle samples larger than 4GB anyway */
|
||||
/* Serialised size of sample inclusive of DDSI encoding header
|
||||
- uint32_t because the protocol can't handle samples larger than 4GB anyway
|
||||
- FIXME: get the encoding header out of the serialised data */
|
||||
typedef uint32_t (*ddsi_serdata_size_t) (const struct ddsi_serdata *d);
|
||||
|
||||
/* Free a serdata (called by unref when refcount goes to 0) */
|
||||
typedef void (*ddsi_serdata_free_t) (struct ddsi_serdata *d);
|
||||
|
||||
/* Construct a serdata from a fragchain received over the network */
|
||||
/* Construct a serdata from a fragchain received over the network
|
||||
- "kind" is KEY or DATA depending on the type of payload
|
||||
- "size" is the serialised size of the sample, inclusive of DDSI encoding header
|
||||
- the first fragchain always contains the encoding header in its entirety
|
||||
- fragchains may overlap, though I have never seen any DDS implementation
|
||||
actually send such nasty fragments
|
||||
- FIXME: get the encoding header out of the serialised data */
|
||||
typedef struct ddsi_serdata * (*ddsi_serdata_from_ser_t) (const struct ddsi_sertopic *topic, enum ddsi_serdata_kind kind, const struct nn_rdata *fragchain, size_t size);
|
||||
|
||||
/* Construct a serdata from a keyhash (an SDK_KEY by definition) */
|
||||
typedef struct ddsi_serdata * (*ddsi_serdata_from_keyhash_t) (const struct ddsi_sertopic *topic, const struct nn_keyhash *keyhash);
|
||||
|
||||
/* Construct a serdata from an application sample */
|
||||
/* Construct a serdata from an application sample
|
||||
- "kind" is KEY or DATA depending on the operation invoked by the application;
|
||||
e.g., write results in kind = DATA, dispose in kind = KEY. The important bit
|
||||
is to not assume anything of the contents of non-key fields if kind = KEY
|
||||
unless additional application knowledge is available */
|
||||
typedef struct ddsi_serdata * (*ddsi_serdata_from_sample_t) (const struct ddsi_sertopic *topic, enum ddsi_serdata_kind kind, const void *sample);
|
||||
|
||||
/* Construct a topic-less serdata with a keyvalue given a normal serdata (either key or data) - used for tkmap */
|
||||
/* Construct a topic-less serdata with just a keyvalue given a normal serdata (either key or data)
|
||||
- used for mapping key values to instance ids in tkmap
|
||||
- two reasons: size (keys are typically smaller than samples), and data in tkmap
|
||||
is shared across topics
|
||||
- whether a serdata is topicless or not is known from the context, and the topic
|
||||
field may have any value for a topicless serdata (so in some cases, one can
|
||||
simply do "return ddsi_serdata_ref(d);"
|
||||
*/
|
||||
typedef struct ddsi_serdata * (*ddsi_serdata_to_topicless_t) (const struct ddsi_serdata *d);
|
||||
|
||||
/* Fill buffer with 'size' bytes of serialised data, starting from 'off'; 0 <= off < off+sz <=
|
||||
alignup4(size(d)) */
|
||||
/* Fill buffer with 'size' bytes of serialised data, starting from 'off'
|
||||
- 0 <= off < off+sz <= alignup4(size(d))
|
||||
- bytes at offsets 0 .. 3 are DDSI encoding header, size(d) includes that header
|
||||
- what to copy for bytes in [size(d), alignup4(size(d))) depends on the serdata
|
||||
implementation, the protocol treats them as undefined
|
||||
- FIXME: get the encoding header out of the serialised data */
|
||||
typedef void (*ddsi_serdata_to_ser_t) (const struct ddsi_serdata *d, size_t off, size_t sz, void *buf);
|
||||
|
||||
/* Provide a pointer to 'size' bytes of serialised data, starting from 'off'; 0 <= off < off+sz <=
|
||||
alignup4(size(d)); it must remain valid until the corresponding call to to_ser_unref. Multiple
|
||||
calls to to_ser_ref() may be issued in parallel, the separate ref/unref bit is there to at least
|
||||
have the option of lazily creating the serialised representation and freeing it when no one needs
|
||||
it, while the sample itself remains valid */
|
||||
/* Provide a pointer to 'size' bytes of serialised data, starting from 'off'
|
||||
- see ddsi_serdata_to_ser_t above
|
||||
- instead of copying, this gives a reference that must remain valid until the
|
||||
corresponding call to to_ser_unref
|
||||
- multiple calls to to_ser_ref() may be issued in parallel
|
||||
- lazily creating the serialised representation is allowed (though I'm not sure
|
||||
how that would work with knowing the serialised size beforehand ...) */
|
||||
typedef struct ddsi_serdata * (*ddsi_serdata_to_ser_ref_t) (const struct ddsi_serdata *d, size_t off, size_t sz, ddsrt_iovec_t *ref);
|
||||
|
||||
/* Release a lock on serialised data, ref must be a pointer previously obtained by calling
|
||||
to_ser_ref(d, off, sz) for some offset off. */
|
||||
/* Release a lock on serialised data
|
||||
- ref was previousy filled by ddsi_serdata_to_ser_ref_t */
|
||||
typedef void (*ddsi_serdata_to_ser_unref_t) (struct ddsi_serdata *d, const ddsrt_iovec_t *ref);
|
||||
|
||||
/* Turn serdata into an application sample (or just the key values if only key values are
|
||||
|
@ -83,11 +112,11 @@ typedef void (*ddsi_serdata_to_ser_unref_t) (struct ddsi_serdata *d, const ddsrt
|
|||
by the caller.) */
|
||||
typedef bool (*ddsi_serdata_to_sample_t) (const struct ddsi_serdata *d, void *sample, void **bufptr, void *buflim);
|
||||
|
||||
/* Create a sample from a topicless serdata, as returned by serdata_to_topicless. This sample
|
||||
obviously has just the key fields filled in, and is used for generating invalid samples. */
|
||||
/* Create a sample from a topicless serdata, as returned by serdata_to_topicless. This sample
|
||||
obviously has just the key fields filled in and is used for generating invalid samples. */
|
||||
typedef bool (*ddsi_serdata_topicless_to_sample_t) (const struct ddsi_sertopic *topic, const struct ddsi_serdata *d, void *sample, void **bufptr, void *buflim);
|
||||
|
||||
/* Test key values of two serdatas for equality. The two will have the same ddsi_serdata_ops,
|
||||
/* Test key values of two serdatas for equality. The two will have the same ddsi_serdata_ops,
|
||||
but are not necessarily of the same topic (one can decide to never consider them equal if they
|
||||
are of different topics, of course; but the nice thing about _not_ doing that is that all
|
||||
instances with a certain key value with have the same instance id, and that in turn makes
|
||||
|
@ -166,4 +195,8 @@ DDS_EXPORT inline bool ddsi_serdata_eqkey (const struct ddsi_serdata *a, const s
|
|||
return a->ops->eqkey (a, b);
|
||||
}
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -22,6 +22,10 @@
|
|||
#include "dds/dds.h"
|
||||
#include "dds__topic.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if DDSRT_ENDIAN == DDSRT_LITTLE_ENDIAN
|
||||
#define CDR_BE 0x0000
|
||||
#define CDR_LE 0x0100
|
||||
|
@ -125,4 +129,8 @@ extern DDS_EXPORT const struct ddsi_serdata_ops ddsi_serdata_ops_rawcdr;
|
|||
struct serdatapool * ddsi_serdatapool_new (void);
|
||||
void ddsi_serdatapool_free (struct serdatapool * pool);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -16,6 +16,10 @@
|
|||
#include "dds/ddsrt/avl.h"
|
||||
#include "dds/ddsc/dds_public_alloc.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct ddsi_serdata;
|
||||
struct ddsi_serdata_ops;
|
||||
|
||||
|
@ -29,9 +33,9 @@ struct ddsi_sertopic {
|
|||
const struct ddsi_sertopic_ops *ops;
|
||||
const struct ddsi_serdata_ops *serdata_ops;
|
||||
uint32_t serdata_basehash;
|
||||
char *name_typename;
|
||||
char *name_type_name;
|
||||
char *name;
|
||||
char *typename;
|
||||
char *type_name;
|
||||
uint64_t iid;
|
||||
ddsrt_atomic_uint32_t refc; /* counts refs from entities, not from data */
|
||||
|
||||
|
@ -39,12 +43,14 @@ struct ddsi_sertopic {
|
|||
struct dds_topic * status_cb_entity;
|
||||
};
|
||||
|
||||
/* Called when the refcount dropped to zero */
|
||||
typedef void (*ddsi_sertopic_deinit_t) (struct ddsi_sertopic *tp);
|
||||
|
||||
/* Release any memory allocated by ddsi_sertopic_to_sample */
|
||||
/* Zero out a sample, used for generating samples from just a key value and in cleaning up
|
||||
after dds_return_loan */
|
||||
typedef void (*ddsi_sertopic_zero_samples_t) (const struct ddsi_sertopic *d, void *samples, size_t count);
|
||||
|
||||
/* Release any memory allocated by ddsi_sertopic_to_sample */
|
||||
/* (Re)allocate an array of samples, used in growing loaned sample arrays in dds_read */
|
||||
typedef void (*ddsi_sertopic_realloc_samples_t) (void **ptrs, const struct ddsi_sertopic *d, void *old, size_t oldcount, size_t count);
|
||||
|
||||
/* Release any memory allocated by ddsi_sertopic_to_sample (also undo sertopic_alloc_sample if "op" so requests) */
|
||||
|
@ -86,4 +92,8 @@ DDS_EXPORT inline void ddsi_sertopic_free_sample (const struct ddsi_sertopic *tp
|
|||
ddsi_sertopic_free_samples (tp, &sample, 1, op);
|
||||
}
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -20,8 +20,16 @@
|
|||
#endif
|
||||
#include <openssl/ssl.h>
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct ddsi_ssl_plugins;
|
||||
void ddsi_ssl_config_plugin (struct ddsi_ssl_plugins *plugin);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -18,6 +18,10 @@
|
|||
|
||||
#include "dds/ddsi/ddsi_ssl.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct ddsi_ssl_plugins
|
||||
{
|
||||
bool (*init) (void);
|
||||
|
@ -31,8 +35,20 @@ struct ddsi_ssl_plugins
|
|||
SSL * (*accept) (BIO *bio, ddsrt_socket_t *sock);
|
||||
};
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int ddsi_tcp_init (void);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -14,9 +14,16 @@
|
|||
|
||||
/* DDSI Transport module */
|
||||
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
#include "dds/ddsrt/ifaddrs.h"
|
||||
#include "dds/ddsrt/atomics.h"
|
||||
#include "dds/ddsi/q_protocol.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct nn_interface;
|
||||
|
||||
/* Types supporting handles */
|
||||
|
||||
#define DDSI_TRAN_CONN 1
|
||||
|
@ -69,7 +76,7 @@ enum ddsi_nearby_address_result {
|
|||
DNAR_SAME
|
||||
};
|
||||
|
||||
typedef enum ddsi_nearby_address_result (*ddsi_is_nearby_address_fn_t) (ddsi_tran_factory_t tran, const nn_locator_t *loc, size_t ninterf, const struct nn_interface interf[]);
|
||||
typedef enum ddsi_nearby_address_result (*ddsi_is_nearby_address_fn_t) (ddsi_tran_factory_t tran, const nn_locator_t *loc, size_t ninterf, const struct nn_interface *interf);
|
||||
|
||||
enum ddsi_locator_from_string_result {
|
||||
AFSR_OK, /* conversion succeeded */
|
||||
|
@ -239,7 +246,7 @@ void ddsi_conn_transfer_group_membership (ddsi_tran_conn_t conn, ddsi_tran_conn_
|
|||
int ddsi_conn_rejoin_transferred_mcgroups (ddsi_tran_conn_t conn);
|
||||
int ddsi_is_mcaddr (const nn_locator_t *loc);
|
||||
int ddsi_is_ssm_mcaddr (const nn_locator_t *loc);
|
||||
enum ddsi_nearby_address_result ddsi_is_nearby_address (const nn_locator_t *loc, size_t ninterf, const struct nn_interface interf[]);
|
||||
enum ddsi_nearby_address_result ddsi_is_nearby_address (const nn_locator_t *loc, size_t ninterf, const struct nn_interface *interf);
|
||||
|
||||
enum ddsi_locator_from_string_result ddsi_locator_from_string (nn_locator_t *loc, const char *str);
|
||||
|
||||
|
@ -271,4 +278,8 @@ inline ddsi_tran_conn_t ddsi_listener_accept (ddsi_tran_listener_t listener) {
|
|||
void ddsi_listener_unblock (ddsi_tran_listener_t listener);
|
||||
void ddsi_listener_free (ddsi_tran_listener_t listener);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -12,6 +12,14 @@
|
|||
#ifndef _DDSI_UDP_H_
|
||||
#define _DDSI_UDP_H_
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int ddsi_udp_init (void);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -18,6 +18,10 @@
|
|||
|
||||
#include "dds/ddsi/q_unused.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
inline int nn_bitset_isset (uint32_t numbits, const uint32_t *bits, uint32_t idx)
|
||||
{
|
||||
return idx < numbits && (bits[idx/32] & (UINT32_C(1) << (31 - (idx%32))));
|
||||
|
@ -52,4 +56,8 @@ inline void nn_bitset_one (uint32_t numbits, uint32_t *bits)
|
|||
}
|
||||
}
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* NN_BITSET_H */
|
||||
|
|
|
@ -19,6 +19,10 @@
|
|||
#include "dds/ddsi/q_rtps.h" /* for nn_guid_t, nn_guid_prefix_t */
|
||||
#include "dds/ddsi/q_protocol.h" /* for nn_sequence_number_t */
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
inline uint16_t bswap2u (uint16_t x)
|
||||
{
|
||||
return (uint16_t) ((x >> 8) | (x << 8));
|
||||
|
@ -84,10 +88,6 @@ inline void bswapSN (nn_sequence_number_t *sn)
|
|||
#define fromBE8u(x) (x)
|
||||
#endif
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
nn_guid_prefix_t nn_hton_guid_prefix (nn_guid_prefix_t p);
|
||||
nn_guid_prefix_t nn_ntoh_guid_prefix (nn_guid_prefix_t p);
|
||||
nn_entityid_t nn_hton_entityid (nn_entityid_t e);
|
||||
|
|
|
@ -12,6 +12,10 @@
|
|||
#ifndef Q_DEBMON_H
|
||||
#define Q_DEBMON_H
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct debug_monitor;
|
||||
typedef int (*debug_monitor_cpf_t) (ddsi_tran_conn_t conn, const char *fmt, ...);
|
||||
typedef int (*debug_monitor_plugin_t) (ddsi_tran_conn_t conn, debug_monitor_cpf_t cpf, void *arg);
|
||||
|
@ -20,4 +24,8 @@ struct debug_monitor *new_debug_monitor (int port);
|
|||
void add_debug_monitor_plugin (struct debug_monitor *dm, debug_monitor_plugin_t fn, void *arg);
|
||||
void free_debug_monitor (struct debug_monitor *dm);
|
||||
|
||||
#endif /* defined(__ospli_osplo__q_debmon__) */
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
#include "dds/ddsrt/atomics.h"
|
||||
#include "dds/ddsrt/avl.h"
|
||||
#include "dds/ddsrt/sync.h"
|
||||
#include "dds/ddsi/q_rtps.h"
|
||||
#include "dds/ddsi/q_protocol.h"
|
||||
#include "dds/ddsi/q_lat_estim.h"
|
||||
|
@ -32,11 +33,14 @@ struct xevent;
|
|||
struct nn_reorder;
|
||||
struct nn_defrag;
|
||||
struct nn_dqueue;
|
||||
struct nn_rsample_info;
|
||||
struct nn_rdata;
|
||||
struct addrset;
|
||||
struct ddsi_sertopic;
|
||||
struct whc;
|
||||
struct nn_xqos;
|
||||
struct nn_plist;
|
||||
struct lease;
|
||||
|
||||
struct proxy_group;
|
||||
struct proxy_endpoint_common;
|
||||
|
@ -159,7 +163,7 @@ struct participant
|
|||
unsigned bes; /* built-in endpoint set */
|
||||
unsigned prismtech_bes; /* prismtech-specific extension of built-in endpoints set */
|
||||
unsigned is_ddsi2_pp: 1; /* true for the "federation leader", the ddsi2 participant itself in OSPL; FIXME: probably should use this for broker mode as well ... */
|
||||
nn_plist_t *plist; /* settings/QoS for this participant */
|
||||
struct nn_plist *plist; /* settings/QoS for this participant */
|
||||
struct xevent *spdp_xevent; /* timed event for periodically publishing SPDP */
|
||||
struct xevent *pmd_update_xevent; /* timed event for periodically publishing ParticipantMessageData */
|
||||
nn_locator_t m_locator;
|
||||
|
@ -294,7 +298,7 @@ struct proxy_participant
|
|||
unsigned bes; /* built-in endpoint set */
|
||||
unsigned prismtech_bes; /* prismtech-specific extension of built-in endpoints set */
|
||||
nn_guid_t privileged_pp_guid; /* if this PP depends on another PP for its SEDP writing */
|
||||
nn_plist_t *plist; /* settings/QoS for this participant */
|
||||
struct nn_plist *plist; /* settings/QoS for this participant */
|
||||
ddsrt_atomic_voidp_t lease; /* lease object for this participant, for automatic leases */
|
||||
struct addrset *as_default; /* default address set to use for user data traffic */
|
||||
struct addrset *as_meta; /* default address set to use for discovery traffic */
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
#include "dds/ddsrt/atomics.h"
|
||||
#include "dds/ddsrt/sync.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define FREELIST_SIMPLE 1
|
||||
#define FREELIST_ATOMIC_LIFO 2
|
||||
#define FREELIST_DOUBLE 3
|
||||
|
@ -74,4 +78,8 @@ bool nn_freelist_push (struct nn_freelist *fl, void *elem);
|
|||
void *nn_freelist_pushmany (struct nn_freelist *fl, void *first, void *last, uint32_t n);
|
||||
void *nn_freelist_pop (struct nn_freelist *fl);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* NN_FREELIST_H */
|
||||
|
|
|
@ -12,7 +12,15 @@
|
|||
#ifndef Q_INIT_H
|
||||
#define Q_INIT_H
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int create_multicast_sockets(void);
|
||||
int joinleave_spdp_defmcip (int dojoin);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -14,6 +14,10 @@
|
|||
|
||||
#include "dds/ddsrt/avl.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct inverse_uint32_set_node {
|
||||
ddsrt_avl_node_t avlnode;
|
||||
uint32_t min, max;
|
||||
|
@ -29,4 +33,8 @@ void inverse_uint32_set_fini(struct inverse_uint32_set *set);
|
|||
int inverse_uint32_set_alloc(uint32_t * const id, struct inverse_uint32_set *set);
|
||||
void inverse_uint32_set_free(struct inverse_uint32_set *set, uint32_t id);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
|
||||
#include "dds/ddsrt/atomics.h"
|
||||
#include "dds/ddsrt/threads.h"
|
||||
#include "dds/ddsi/q_rtps.h"
|
||||
#include "dds/ddsi/ddsi_tran.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
|
|
|
@ -29,6 +29,7 @@ struct proxy_writer;
|
|||
|
||||
struct nn_prismtech_participant_version_info;
|
||||
struct nn_prismtech_writer_info;
|
||||
struct nn_prismtech_eotinfo;
|
||||
struct nn_xmsgpool;
|
||||
struct nn_xmsg_data;
|
||||
struct nn_xmsg;
|
||||
|
|
|
@ -14,6 +14,14 @@
|
|||
|
||||
#include "dds/ddsi/ddsi_tran.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int ddsi_eth_enumerate_interfaces(ddsi_tran_factory_t fact, ddsrt_ifaddrs_t **ifs);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DDSI_ETH_H */
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "dds/ddsi/ddsi_ipaddr.h"
|
||||
#include "dds/ddsi/q_nwif.h"
|
||||
#include "dds/ddsi/q_config.h"
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
|
||||
int ddsi_ipaddr_compare (const struct sockaddr *const sa1, const struct sockaddr *const sa2)
|
||||
{
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "dds/ddsi/ddsi_mcgroup.h"
|
||||
#include "dds/ddsi/q_config.h"
|
||||
#include "dds/ddsi/q_log.h"
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
#include "dds/ddsrt/avl.h"
|
||||
|
||||
struct nn_group_membership_node {
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "dds/ddsi/q_log.h"
|
||||
#include "dds/ddsi/q_error.h"
|
||||
#include "dds/ddsi/q_pcap.h"
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
#include "dds/ddsrt/atomics.h"
|
||||
#include "dds/ddsrt/heap.h"
|
||||
#include "dds/ddsrt/log.h"
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "dds/ddsi/ddsi_tkmap.h"
|
||||
#include "dds__stream.h"
|
||||
#include "dds/ddsi/q_radmin.h"
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
#include "dds/ddsi/ddsi_serdata_default.h"
|
||||
|
||||
#define MAX_POOL_SIZE 16384
|
||||
|
|
|
@ -37,9 +37,9 @@ void ddsi_sertopic_unref (struct ddsi_sertopic *sertopic)
|
|||
if (ddsrt_atomic_dec32_ov (&sertopic->refc) == 1)
|
||||
{
|
||||
ddsi_sertopic_deinit (sertopic);
|
||||
ddsrt_free (sertopic->name_typename);
|
||||
ddsrt_free (sertopic->name_type_name);
|
||||
ddsrt_free (sertopic->name);
|
||||
ddsrt_free (sertopic->typename);
|
||||
ddsrt_free (sertopic->type_name);
|
||||
ddsrt_free (sertopic);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "dds/ddsi/q_config.h"
|
||||
#include "dds/ddsi/q_log.h"
|
||||
#include "dds/ddsi/q_entity.h"
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
|
||||
#define INVALID_PORT (~0u)
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "dds/ddsi/ddsi_tran.h"
|
||||
#include "dds/ddsi/q_config.h"
|
||||
#include "dds/ddsi/q_log.h"
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
|
||||
static ddsi_tran_factory_t ddsi_tran_factories = NULL;
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "dds/ddsi/q_config.h"
|
||||
#include "dds/ddsi/q_log.h"
|
||||
#include "dds/ddsi/q_pcap.h"
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
|
||||
extern void ddsi_factory_conn_init (ddsi_tran_factory_t factory, ddsi_tran_conn_t conn);
|
||||
|
||||
|
|
|
@ -121,7 +121,7 @@ static int print_any_endpoint_common (ddsi_tran_conn_t conn, const char *label,
|
|||
if (xqos->partition.n > 1) cpf (conn, "}");
|
||||
x += cpf (conn, ".%s/%s",
|
||||
topic && topic->name ? topic->name : (xqos->present & QP_TOPIC_NAME) ? xqos->topic_name : "(null)",
|
||||
topic && topic->typename ? topic->typename : (xqos->present & QP_TYPE_NAME) ? xqos->type_name : "(null)");
|
||||
topic && topic->type_name ? topic->type_name : (xqos->present & QP_TYPE_NAME) ? xqos->type_name : "(null)");
|
||||
}
|
||||
cpf (conn, "\n");
|
||||
return x;
|
||||
|
|
|
@ -2383,7 +2383,7 @@ static void new_reader_writer_common (const struct nn_guid *guid, const struct d
|
|||
PGUID (*guid),
|
||||
partition, partition_suffix,
|
||||
topic ? topic->name : "(null)",
|
||||
topic ? topic->typename : "(null)");
|
||||
topic ? topic->type_name : "(null)");
|
||||
}
|
||||
|
||||
static void endpoint_common_init (struct entity_common *e, struct endpoint_common *c, enum entity_kind kind, const struct nn_guid *guid, const struct nn_guid *group_guid, struct participant *pp)
|
||||
|
@ -2415,7 +2415,7 @@ static int set_topic_type_name (nn_xqos_t *xqos, const struct ddsi_sertopic * to
|
|||
if (!(xqos->present & QP_TYPE_NAME) && topic)
|
||||
{
|
||||
xqos->present |= QP_TYPE_NAME;
|
||||
xqos->type_name = ddsrt_strdup (topic->typename);
|
||||
xqos->type_name = ddsrt_strdup (topic->type_name);
|
||||
}
|
||||
if (!(xqos->present & QP_TOPIC_NAME) && topic)
|
||||
{
|
||||
|
@ -2881,7 +2881,7 @@ struct local_orphan_writer *new_local_orphan_writer (nn_entityid_t entityid, str
|
|||
struct writer *wr;
|
||||
nn_mtime_t tnow = now_mt ();
|
||||
|
||||
DDS_LOG(DDS_LC_DISCOVERY, "new_local_orphan_writer(%s/%s)\n", topic->name, topic->typename);
|
||||
DDS_LOG(DDS_LC_DISCOVERY, "new_local_orphan_writer(%s/%s)\n", topic->name, topic->type_name);
|
||||
lowr = ddsrt_malloc (sizeof (*lowr));
|
||||
wr = &lowr->wr;
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "dds/ddsi/q_xmsg.h"
|
||||
|
||||
#include "dds/ddsi/q_config.h"
|
||||
#include "dds/ddsi/q_globals.h"
|
||||
#include "dds/ddsi/q_protocol.h" /* for NN_STATUSINFO_... */
|
||||
#include "dds/ddsi/q_radmin.h" /* for nn_plist_quickscan */
|
||||
#include "dds/ddsi/q_static_assert.h"
|
||||
|
|
|
@ -1885,7 +1885,7 @@ static struct ddsi_serdata *extract_sample_from_data
|
|||
"data(application, vendor %u.%u): %x:%x:%x:%x #%"PRId64": deserialization %s/%s failed (%s)\n",
|
||||
sampleinfo->rst->vendor.id[0], sampleinfo->rst->vendor.id[1],
|
||||
PGUID (guid), sampleinfo->seq,
|
||||
topic->name, topic->typename,
|
||||
topic->name, topic->type_name,
|
||||
failmsg ? failmsg : "for reasons unknown"
|
||||
);
|
||||
}
|
||||
|
@ -2388,7 +2388,7 @@ static void drop_oversize (struct receiver_state *rst, struct nn_rmsg *rmsg, con
|
|||
if (gap_was_valuable)
|
||||
{
|
||||
const char *tname = pwr->c.topic ? pwr->c.topic->name : "(null)";
|
||||
const char *ttname = pwr->c.topic ? pwr->c.topic->typename : "(null)";
|
||||
const char *ttname = pwr->c.topic ? pwr->c.topic->type_name : "(null)";
|
||||
DDS_WARNING ("dropping oversize (%u > %u) sample %"PRId64" from remote writer %x:%x:%x:%x %s/%s\n",
|
||||
sampleinfo->size, config.max_sample_size, sampleinfo->seq,
|
||||
PGUIDPREFIX (rst->src_guid_prefix), msg->writerId.u,
|
||||
|
|
|
@ -868,7 +868,7 @@ static int insert_sample_in_whc (struct writer *wr, seqno_t seq, struct nn_plist
|
|||
char ppbuf[1024];
|
||||
int tmp;
|
||||
const char *tname = wr->topic ? wr->topic->name : "(null)";
|
||||
const char *ttname = wr->topic ? wr->topic->typename : "(null)";
|
||||
const char *ttname = wr->topic ? wr->topic->type_name : "(null)";
|
||||
ppbuf[0] = '\0';
|
||||
tmp = sizeof (ppbuf) - 1;
|
||||
DDS_TRACE("write_sample %x:%x:%x:%x #%"PRId64"", PGUID (wr->e.guid), seq);
|
||||
|
@ -1043,7 +1043,7 @@ static int write_sample_eot (struct thread_state1 * const ts1, struct nn_xpack *
|
|||
char ppbuf[1024];
|
||||
int tmp;
|
||||
const char *tname = wr->topic ? wr->topic->name : "(null)";
|
||||
const char *ttname = wr->topic ? wr->topic->typename : "(null)";
|
||||
const char *ttname = wr->topic ? wr->topic->type_name : "(null)";
|
||||
ppbuf[0] = '\0';
|
||||
tmp = sizeof (ppbuf) - 1;
|
||||
DDS_WARNING ("dropping oversize (%u > %u) sample from local writer %x:%x:%x:%x %s/%s:%s%s\n",
|
||||
|
|
|
@ -12,6 +12,10 @@
|
|||
#ifndef DDSRT_ATOMICS_ARM_H
|
||||
#define DDSRT_ATOMICS_ARM_H
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if !defined(__arm__)
|
||||
#define __arm__
|
||||
#endif
|
||||
|
@ -209,5 +213,8 @@ inline void ddsrt_atomic_fence_rel (void) {
|
|||
ddsrt_atomic_fence ();
|
||||
}
|
||||
|
||||
#endif /* DDSRT_ATOMICS_ARM_H */
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DDSRT_ATOMICS_ARM_H */
|
||||
|
|
|
@ -14,6 +14,10 @@
|
|||
|
||||
#include "dds/ddsrt/misc.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if ( DDSRT_HAVE_ATOMIC64 && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) || \
|
||||
(!DDSRT_HAVE_ATOMIC64 && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)
|
||||
# define DDSRT_HAVE_ATOMIC_LIFO 1
|
||||
|
@ -287,5 +291,8 @@ inline void ddsrt_atomic_fence_rel (void) {
|
|||
ddsrt_atomic_fence ();
|
||||
}
|
||||
|
||||
#endif /* DDSRT_ATOMICS_GCC_H */
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DDSRT_ATOMICS_GCC_H */
|
||||
|
|
|
@ -14,6 +14,10 @@
|
|||
|
||||
#include "dds/ddsrt/misc.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* x86 has supported 64-bit CAS for a long time, so Windows ought to
|
||||
provide all the interlocked operations for 64-bit operands on x86
|
||||
platforms, but it doesn't. */
|
||||
|
@ -295,5 +299,8 @@ inline void ddsrt_atomic_fence_rel (void) {
|
|||
|
||||
#undef DDSRT_ATOMIC_PTROP
|
||||
|
||||
#endif /* DDSRT_ATOMICS_MSVC_H */
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DDSRT_ATOMICS_MSVC_H */
|
||||
|
|
|
@ -11,6 +11,10 @@
|
|||
*/
|
||||
#include <atomic.h>
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define DDSRT_ATOMIC64_SUPPORT 1
|
||||
|
||||
/* LD, ST */
|
||||
|
@ -239,3 +243,6 @@ inline void ddsrt_atomic_fence_rel (void) {
|
|||
membar_exit ();
|
||||
}
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -15,10 +15,18 @@
|
|||
#include "dds/export.h"
|
||||
#include "dds/ddsrt/sync.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
DDS_EXPORT void ddsrt_init(void);
|
||||
|
||||
DDS_EXPORT void ddsrt_fini(void);
|
||||
|
||||
DDS_EXPORT ddsrt_mutex_t *ddsrt_get_singleton_mutex(void);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DDSRT_CDTORS_H */
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
#define DDSRT_MD5_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include "dds/export.h"
|
||||
|
||||
/*
|
||||
* This package supports both compile-time and run-time determination of CPU
|
||||
|
@ -90,13 +91,13 @@ extern "C"
|
|||
#endif
|
||||
|
||||
/* Initialize the algorithm. */
|
||||
void ddsrt_md5_init(ddsrt_md5_state_t *pms);
|
||||
DDS_EXPORT void ddsrt_md5_init(ddsrt_md5_state_t *pms);
|
||||
|
||||
/* Append a string to the message. */
|
||||
void ddsrt_md5_append(ddsrt_md5_state_t *pms, const ddsrt_md5_byte_t *data, unsigned nbytes);
|
||||
DDS_EXPORT void ddsrt_md5_append(ddsrt_md5_state_t *pms, const ddsrt_md5_byte_t *data, unsigned nbytes);
|
||||
|
||||
/* Finish the message and return the digest. */
|
||||
void ddsrt_md5_finish(ddsrt_md5_state_t *pms, ddsrt_md5_byte_t digest[16]);
|
||||
DDS_EXPORT void ddsrt_md5_finish(ddsrt_md5_state_t *pms, ddsrt_md5_byte_t digest[16]);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* end extern "C" */
|
||||
|
|
|
@ -5,6 +5,10 @@
|
|||
|
||||
#include "dds/export.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef int32_t dds_retcode_t;
|
||||
|
||||
/*
|
||||
|
@ -86,4 +90,8 @@ typedef int32_t dds_retcode_t;
|
|||
*/
|
||||
DDS_EXPORT const char *dds_strretcode(dds_retcode_t ret);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DDS_RETCODE_H */
|
||||
|
|
|
@ -17,6 +17,10 @@
|
|||
#include "dds/ddsrt/time.h"
|
||||
#include "dds/ddsrt/retcode.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
dds_time_t utime; /* User CPU time used. */
|
||||
dds_time_t stime; /* System CPU time used. */
|
||||
|
@ -47,4 +51,8 @@ typedef struct {
|
|||
*/
|
||||
DDS_EXPORT dds_retcode_t ddsrt_getrusage(int who, ddsrt_rusage_t *usage);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DDSRT_RUSAGE_H */
|
||||
|
|
|
@ -14,6 +14,10 @@
|
|||
#include "dds/ddsrt/sockets/posix.h"
|
||||
#endif
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define INET_ADDRSTRLEN_EXTENDED (INET_ADDRSTRLEN + 6) /* ":12345" */
|
||||
|
||||
#if DDSRT_HAVE_IPV6
|
||||
|
@ -261,4 +265,8 @@ ddsrt_gethostbyname(
|
|||
ddsrt_hostent_t **hentp);
|
||||
#endif
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DDSRT_SOCKETS_H */
|
||||
|
|
|
@ -22,6 +22,10 @@
|
|||
#include "dds/export.h"
|
||||
#include "dds/ddsrt/retcode.h"
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Convert a string to a double precision floating point number.
|
||||
*
|
||||
|
@ -72,4 +76,8 @@ ddsrt_dtostr(double src, char *str, size_t size);
|
|||
DDS_EXPORT int
|
||||
ddsrt_ftostr(float src, char *str, size_t size);
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DDSRT_STRTOD_H */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue