Rearrange things to make RHC interface public

This makes it possible to write one's own RHC implementation.  This is
not a stable interface.  It shuffles a few things around and renames
some types used throughout the code to stick to having a "dds" prefix
for all the external things.

Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
Erik Boasson 2019-09-02 08:57:17 +02:00 committed by eboasson
parent 801ae26872
commit 57d20e07a4
50 changed files with 574 additions and 555 deletions

View file

@ -50,6 +50,7 @@ PREPEND(hdrs_public_ddsc "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include/dd
ddsc/dds_public_qos.h ddsc/dds_public_qos.h
ddsc/dds_public_qosdefs.h ddsc/dds_public_qosdefs.h
ddsc/dds_public_status.h ddsc/dds_public_status.h
ddsc/dds_rhc.h
) )
PREPEND(hdrs_private_ddsc "${CMAKE_CURRENT_LIST_DIR}/src" PREPEND(hdrs_private_ddsc "${CMAKE_CURRENT_LIST_DIR}/src"
@ -67,7 +68,6 @@ PREPEND(hdrs_private_ddsc "${CMAKE_CURRENT_LIST_DIR}/src"
dds__readcond.h dds__readcond.h
dds__guardcond.h dds__guardcond.h
dds__reader.h dds__reader.h
dds__rhc.h
dds__rhc_default.h dds__rhc_default.h
dds__stream.h dds__stream.h
dds__subscriber.h dds__subscriber.h

View file

@ -13,8 +13,7 @@
#define _DDS_RHC_H_ #define _DDS_RHC_H_
#include "dds/ddsrt/static_assert.h" #include "dds/ddsrt/static_assert.h"
#include "dds/ddsi/q_rhc.h" #include "dds/ddsi/ddsi_rhc.h"
#include "dds__types.h" /* for dds_readcond */
#define NO_STATE_MASK_SET (DDS_ANY_STATE + 1) #define NO_STATE_MASK_SET (DDS_ANY_STATE + 1)
@ -23,20 +22,21 @@ extern "C" {
#endif #endif
struct dds_rhc; struct dds_rhc;
struct dds_readcond;
typedef int (*dds_rhc_read_t) (struct dds_rhc *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, struct dds_readcond *cond); typedef int (*dds_rhc_read_t) (struct dds_rhc *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, struct dds_readcond *cond);
typedef int (*dds_rhc_take_t) (struct dds_rhc *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, struct dds_readcond *cond); typedef int (*dds_rhc_take_t) (struct dds_rhc *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, struct dds_readcond *cond);
typedef int (*dds_rhc_takecdr_t) (struct dds_rhc *rhc, bool lock, struct ddsi_serdata **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t sample_states, uint32_t view_states, uint32_t instance_states, dds_instance_handle_t handle); typedef int (*dds_rhc_takecdr_t) (struct dds_rhc *rhc, bool lock, struct ddsi_serdata **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t sample_states, uint32_t view_states, uint32_t instance_states, dds_instance_handle_t handle);
typedef bool (*dds_rhc_add_readcondition_t) (struct dds_readcond *cond); typedef bool (*dds_rhc_add_readcondition_t) (struct dds_rhc *rhc, struct dds_readcond *cond);
typedef void (*dds_rhc_remove_readcondition_t) (struct dds_readcond *cond); typedef void (*dds_rhc_remove_readcondition_t) (struct dds_rhc *rhc, struct dds_readcond *cond);
typedef uint32_t (*dds_rhc_lock_samples_t) (struct dds_rhc *rhc); typedef uint32_t (*dds_rhc_lock_samples_t) (struct dds_rhc *rhc);
struct dds_rhc_ops { struct dds_rhc_ops {
/* A copy of DDSI rhc ops comes first so we can use either interface without /* A copy of DDSI rhc ops comes first so we can use either interface without
additional indirections */ additional indirections */
struct rhc_ops rhc_ops; struct ddsi_rhc_ops rhc_ops;
dds_rhc_read_t read; dds_rhc_read_t read;
dds_rhc_take_t take; dds_rhc_take_t take;
dds_rhc_takecdr_t takecdr; dds_rhc_takecdr_t takecdr;
@ -48,16 +48,16 @@ struct dds_rhc_ops {
struct dds_rhc { struct dds_rhc {
union { union {
const struct dds_rhc_ops *ops; const struct dds_rhc_ops *ops;
struct rhc rhc; struct ddsi_rhc rhc;
} common; } common;
}; };
DDSRT_STATIC_ASSERT (offsetof (struct dds_rhc, common.ops) == offsetof (struct rhc, ops)); DDSRT_STATIC_ASSERT (offsetof (struct dds_rhc, common.ops) == offsetof (struct ddsi_rhc, ops));
DDS_EXPORT inline bool dds_rhc_store (struct dds_rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk) { DDS_EXPORT inline bool dds_rhc_store (struct dds_rhc * __restrict rhc, const struct ddsi_writer_info * __restrict pwr_info, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk) {
return rhc->common.ops->rhc_ops.store (&rhc->common.rhc, pwr_info, sample, tk); return rhc->common.ops->rhc_ops.store (&rhc->common.rhc, pwr_info, sample, tk);
} }
DDS_EXPORT inline void dds_rhc_unregister_wr (struct dds_rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info) { DDS_EXPORT inline void dds_rhc_unregister_wr (struct dds_rhc * __restrict rhc, const struct ddsi_writer_info * __restrict pwr_info) {
rhc->common.ops->rhc_ops.unregister_wr (&rhc->common.rhc, pwr_info); rhc->common.ops->rhc_ops.unregister_wr (&rhc->common.rhc, pwr_info);
} }
DDS_EXPORT inline void dds_rhc_relinquish_ownership (struct dds_rhc * __restrict rhc, const uint64_t wr_iid) { DDS_EXPORT inline void dds_rhc_relinquish_ownership (struct dds_rhc * __restrict rhc, const uint64_t wr_iid) {
@ -78,11 +78,11 @@ DDS_EXPORT inline int dds_rhc_take (struct dds_rhc *rhc, bool lock, void **value
DDS_EXPORT inline int dds_rhc_takecdr (struct dds_rhc *rhc, bool lock, struct ddsi_serdata **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t sample_states, uint32_t view_states, uint32_t instance_states, dds_instance_handle_t handle) { DDS_EXPORT inline int dds_rhc_takecdr (struct dds_rhc *rhc, bool lock, struct ddsi_serdata **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t sample_states, uint32_t view_states, uint32_t instance_states, dds_instance_handle_t handle) {
return rhc->common.ops->takecdr (rhc, lock, values, info_seq, max_samples, sample_states, view_states, instance_states, handle); return rhc->common.ops->takecdr (rhc, lock, values, info_seq, max_samples, sample_states, view_states, instance_states, handle);
} }
DDS_EXPORT inline bool dds_rhc_add_readcondition (struct dds_readcond *cond) { DDS_EXPORT inline bool dds_rhc_add_readcondition (struct dds_rhc *rhc, struct dds_readcond *cond) {
return cond->m_rhc->common.ops->add_readcondition (cond); return rhc->common.ops->add_readcondition (rhc, cond);
} }
DDS_EXPORT inline void dds_rhc_remove_readcondition (struct dds_readcond *cond) { DDS_EXPORT inline void dds_rhc_remove_readcondition (struct dds_rhc *rhc, struct dds_readcond *cond) {
cond->m_rhc->common.ops->remove_readcondition (cond); rhc->common.ops->remove_readcondition (rhc, cond);
} }
DDS_EXPORT inline uint32_t dds_rhc_lock_samples (struct dds_rhc *rhc) { DDS_EXPORT inline uint32_t dds_rhc_lock_samples (struct dds_rhc *rhc) {
return rhc->common.ops->lock_samples (rhc); return rhc->common.ops->lock_samples (rhc);

View file

@ -22,7 +22,7 @@ extern "C" {
struct ddsi_serdata_builtintopic { struct ddsi_serdata_builtintopic {
struct ddsi_serdata c; struct ddsi_serdata c;
nn_guid_t key; ddsi_guid_t key;
dds_instance_handle_t pphandle; dds_instance_handle_t pphandle;
dds_qos_t xqos; dds_qos_t xqos;
}; };

View file

@ -39,7 +39,7 @@ struct dds_guardcond;
struct dds_statuscond; struct dds_statuscond;
struct ddsi_sertopic; struct ddsi_sertopic;
struct rhc; struct ddsi_rhc;
typedef uint16_t status_mask_t; typedef uint16_t status_mask_t;
typedef ddsrt_atomic_uint32_t status_and_enabled_t; typedef ddsrt_atomic_uint32_t status_and_enabled_t;
@ -124,7 +124,7 @@ typedef struct dds_entity {
ddsrt_avl_tree_t m_children; /* [m_mutex] tree on m_iid using m_avlnode_child */ ddsrt_avl_tree_t m_children; /* [m_mutex] tree on m_iid using m_avlnode_child */
struct dds_domain *m_domain; /* constant */ struct dds_domain *m_domain; /* constant */
dds_qos_t *m_qos; /* [m_mutex] */ dds_qos_t *m_qos; /* [m_mutex] */
nn_guid_t m_guid; /* unique (if not 0) and constant; FIXME: set during creation, but possibly after becoming visible */ ddsi_guid_t m_guid; /* unique (if not 0) and constant; FIXME: set during creation, but possibly after becoming visible */
dds_instance_handle_t m_iid; /* unique for all time, constant; FIXME: like GUID */ dds_instance_handle_t m_iid; /* unique for all time, constant; FIXME: like GUID */
uint32_t m_flags; /* [m_mutex] */ uint32_t m_flags; /* [m_mutex] */
@ -290,12 +290,10 @@ typedef uint32_t dds_querycond_mask_t;
typedef struct dds_readcond { typedef struct dds_readcond {
dds_entity m_entity; dds_entity m_entity;
struct dds_rhc *m_rhc;
uint32_t m_qminv; uint32_t m_qminv;
uint32_t m_sample_states; uint32_t m_sample_states;
uint32_t m_view_states; uint32_t m_view_states;
uint32_t m_instance_states; uint32_t m_instance_states;
nn_guid_t m_rd_guid;
struct dds_readcond *m_next; struct dds_readcond *m_next;
struct { struct {
dds_querycondition_filter_fn m_filter; dds_querycondition_filter_fn m_filter;

View file

@ -162,7 +162,7 @@ static bool dds__builtin_is_builtintopic (const struct ddsi_sertopic *tp, void *
return tp->ops == &ddsi_sertopic_ops_builtintopic; return tp->ops == &ddsi_sertopic_ops_builtintopic;
} }
static bool dds__builtin_is_visible (const nn_guid_t *guid, nn_vendorid_t vendorid, void *vdomain) static bool dds__builtin_is_visible (const ddsi_guid_t *guid, nn_vendorid_t vendorid, void *vdomain)
{ {
(void) vdomain; (void) vdomain;
if (is_builtin_endpoint (guid->entityid, vendorid)) if (is_builtin_endpoint (guid->entityid, vendorid))
@ -170,7 +170,7 @@ static bool dds__builtin_is_visible (const nn_guid_t *guid, nn_vendorid_t vendor
return true; return true;
} }
static struct ddsi_tkmap_instance *dds__builtin_get_tkmap_entry (const struct nn_guid *guid, void *vdomain) static struct ddsi_tkmap_instance *dds__builtin_get_tkmap_entry (const struct ddsi_guid *guid, void *vdomain)
{ {
struct dds_domain *domain = vdomain; struct dds_domain *domain = vdomain;
struct ddsi_tkmap_instance *tk; struct ddsi_tkmap_instance *tk;

View file

@ -15,7 +15,7 @@
#include "dds/ddsrt/process.h" #include "dds/ddsrt/process.h"
#include "dds/ddsrt/heap.h" #include "dds/ddsrt/heap.h"
#include "dds__init.h" #include "dds__init.h"
#include "dds__rhc.h" #include "dds/ddsc/dds_rhc.h"
#include "dds__domain.h" #include "dds__domain.h"
#include "dds__builtin.h" #include "dds__builtin.h"
#include "dds__whc_builtintopic.h" #include "dds__whc_builtintopic.h"

View file

@ -18,7 +18,7 @@
#include "dds/ddsrt/process.h" #include "dds/ddsrt/process.h"
#include "dds/ddsrt/heap.h" #include "dds/ddsrt/heap.h"
#include "dds__init.h" #include "dds__init.h"
#include "dds__rhc.h" #include "dds/ddsc/dds_rhc.h"
#include "dds__domain.h" #include "dds__domain.h"
#include "dds__builtin.h" #include "dds__builtin.h"
#include "dds__whc_builtintopic.h" #include "dds__whc_builtintopic.h"

View file

@ -16,7 +16,7 @@
#include "dds__entity.h" #include "dds__entity.h"
#include "dds__write.h" #include "dds__write.h"
#include "dds__writer.h" #include "dds__writer.h"
#include "dds__rhc.h" #include "dds/ddsc/dds_rhc.h"
#include "dds/ddsi/ddsi_tkmap.h" #include "dds/ddsi/ddsi_tkmap.h"
#include "dds/ddsi/ddsi_serdata.h" #include "dds/ddsi/ddsi_serdata.h"
#include "dds/ddsi/q_entity.h" #include "dds/ddsi/q_entity.h"

View file

@ -123,10 +123,10 @@ dds_return_t dds_get_matched_publications (dds_entity_t reader, dds_instance_han
} }
} }
static dds_builtintopic_endpoint_t *make_builtintopic_endpoint (const nn_guid_t *guid, const nn_guid_t *ppguid, dds_instance_handle_t ppiid, const dds_qos_t *qos) static dds_builtintopic_endpoint_t *make_builtintopic_endpoint (const ddsi_guid_t *guid, const ddsi_guid_t *ppguid, dds_instance_handle_t ppiid, const dds_qos_t *qos)
{ {
dds_builtintopic_endpoint_t *ep; dds_builtintopic_endpoint_t *ep;
nn_guid_t tmp; ddsi_guid_t tmp;
ep = dds_alloc (sizeof (*ep)); ep = dds_alloc (sizeof (*ep));
tmp = nn_hton_guid (*guid); tmp = nn_hton_guid (*guid);
memcpy (&ep->key, &tmp, sizeof (ep->key)); memcpy (&ep->key, &tmp, sizeof (ep->key));

View file

@ -77,7 +77,7 @@ dds_entity_t dds_create_participant (const dds_domainid_t domain, const dds_qos_
{ {
dds_domain *dom; dds_domain *dom;
dds_entity_t ret; dds_entity_t ret;
nn_guid_t guid; ddsi_guid_t guid;
dds_participant * pp; dds_participant * pp;
nn_plist_t plist; nn_plist_t plist;
dds_qos_t *new_qos = NULL; dds_qos_t *new_qos = NULL;

View file

@ -14,7 +14,7 @@
#include "dds__entity.h" #include "dds__entity.h"
#include "dds__reader.h" #include "dds__reader.h"
#include "dds/ddsi/ddsi_tkmap.h" #include "dds/ddsi/ddsi_tkmap.h"
#include "dds__rhc.h" #include "dds/ddsc/dds_rhc.h"
#include "dds/ddsi/q_thread.h" #include "dds/ddsi/q_thread.h"
#include "dds/ddsi/q_ephash.h" #include "dds/ddsi/q_ephash.h"
#include "dds/ddsi/q_entity.h" #include "dds/ddsi/q_entity.h"

View file

@ -12,7 +12,7 @@
#include <assert.h> #include <assert.h>
#include "dds__reader.h" #include "dds__reader.h"
#include "dds__readcond.h" #include "dds__readcond.h"
#include "dds__rhc.h" #include "dds/ddsc/dds_rhc.h"
#include "dds__entity.h" #include "dds__entity.h"
#include "dds/ddsi/ddsi_iid.h" #include "dds/ddsi/ddsi_iid.h"
#include "dds/ddsi/q_ephash.h" #include "dds/ddsi/q_ephash.h"
@ -23,7 +23,9 @@ static dds_return_t dds_readcond_delete (dds_entity *e) ddsrt_nonnull_all;
static dds_return_t dds_readcond_delete (dds_entity *e) static dds_return_t dds_readcond_delete (dds_entity *e)
{ {
dds_rhc_remove_readcondition ((dds_readcond *) e); struct dds_reader * const rd = (struct dds_reader *) e->m_parent;
assert (dds_entity_kind (&rd->m_entity) == DDS_KIND_READER);
dds_rhc_remove_readcondition (rd->m_rhc, (dds_readcond *) e);
return DDS_RETCODE_OK; return DDS_RETCODE_OK;
} }
@ -41,17 +43,15 @@ dds_readcond *dds_create_readcond (dds_reader *rd, dds_entity_kind_t kind, uint3
(void) dds_entity_init (&cond->m_entity, &rd->m_entity, kind, NULL, NULL, 0); (void) dds_entity_init (&cond->m_entity, &rd->m_entity, kind, NULL, NULL, 0);
cond->m_entity.m_iid = ddsi_iid_gen (); cond->m_entity.m_iid = ddsi_iid_gen ();
dds_entity_register_child (&rd->m_entity, &cond->m_entity); dds_entity_register_child (&rd->m_entity, &cond->m_entity);
cond->m_rhc = rd->m_rhc;
cond->m_sample_states = mask & DDS_ANY_SAMPLE_STATE; cond->m_sample_states = mask & DDS_ANY_SAMPLE_STATE;
cond->m_view_states = mask & DDS_ANY_VIEW_STATE; cond->m_view_states = mask & DDS_ANY_VIEW_STATE;
cond->m_instance_states = mask & DDS_ANY_INSTANCE_STATE; cond->m_instance_states = mask & DDS_ANY_INSTANCE_STATE;
cond->m_rd_guid = rd->m_entity.m_guid;
if (kind == DDS_KIND_COND_QUERY) if (kind == DDS_KIND_COND_QUERY)
{ {
cond->m_query.m_filter = filter; cond->m_query.m_filter = filter;
cond->m_query.m_qcmask = 0; cond->m_query.m_qcmask = 0;
} }
if (!dds_rhc_add_readcondition (cond)) if (!dds_rhc_add_readcondition (rd->m_rhc, cond))
{ {
/* FIXME: current entity management code can't deal with an error late in the creation of the /* FIXME: current entity management code can't deal with an error late in the creation of the
entity because it doesn't allow deleting it again ... */ entity because it doesn't allow deleting it again ... */

View file

@ -18,7 +18,7 @@
#include "dds__reader.h" #include "dds__reader.h"
#include "dds__listener.h" #include "dds__listener.h"
#include "dds__init.h" #include "dds__init.h"
#include "dds__rhc.h" #include "dds/ddsc/dds_rhc.h"
#include "dds__rhc_default.h" #include "dds__rhc_default.h"
#include "dds__topic.h" #include "dds__topic.h"
#include "dds__get_status.h" #include "dds__get_status.h"
@ -437,7 +437,7 @@ void dds_reader_ddsi2direct (dds_entity_t entity, ddsi2direct_directread_cb_t cb
dds_reader *dds_rd = (dds_reader *) dds_entity; dds_reader *dds_rd = (dds_reader *) dds_entity;
struct reader *rd = dds_rd->m_rd; struct reader *rd = dds_rd->m_rd;
nn_guid_t pwrguid; ddsi_guid_t pwrguid;
struct proxy_writer *pwr; struct proxy_writer *pwr;
struct rd_pwr_match *m; struct rd_pwr_match *m;
memset (&pwrguid, 0, sizeof (pwrguid)); memset (&pwrguid, 0, sizeof (pwrguid));
@ -450,7 +450,7 @@ void dds_reader_ddsi2direct (dds_entity_t entity, ddsi2direct_directread_cb_t cb
/* have to be careful walking the tree -- pretty is different, but /* have to be careful walking the tree -- pretty is different, but
I want to check this before I write a lookup_succ function. */ I want to check this before I write a lookup_succ function. */
struct rd_pwr_match *m_next; struct rd_pwr_match *m_next;
nn_guid_t pwrguid_next; ddsi_guid_t pwrguid_next;
pwrguid = m->pwr_guid; pwrguid = m->pwr_guid;
if ((m_next = ddsrt_avl_find_succ (&rd_writers_treedef, &rd->writers, m)) != NULL) if ((m_next = ddsrt_avl_find_succ (&rd_writers_treedef, &rd->writers, m)) != NULL)
pwrguid_next = m_next->pwr_guid; pwrguid_next = m_next->pwr_guid;

View file

@ -11,17 +11,17 @@
*/ */
#include "dds/dds.h" #include "dds/dds.h"
#include "dds/ddsi/q_rhc.h" #include "dds/ddsi/ddsi_rhc.h"
#include "dds__rhc.h" #include "dds/ddsc/dds_rhc.h"
extern inline bool dds_rhc_store (struct dds_rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk); extern inline bool dds_rhc_store (struct dds_rhc * __restrict rhc, const struct ddsi_writer_info * __restrict pwr_info, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk);
extern inline void dds_rhc_unregister_wr (struct dds_rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info); extern inline void dds_rhc_unregister_wr (struct dds_rhc * __restrict rhc, const struct ddsi_writer_info * __restrict pwr_info);
extern inline void dds_rhc_relinquish_ownership (struct dds_rhc * __restrict rhc, const uint64_t wr_iid); extern inline void dds_rhc_relinquish_ownership (struct dds_rhc * __restrict rhc, const uint64_t wr_iid);
extern inline void dds_rhc_set_qos (struct dds_rhc *rhc, const struct dds_qos *qos); extern inline void dds_rhc_set_qos (struct dds_rhc *rhc, const struct dds_qos *qos);
extern inline void dds_rhc_free (struct dds_rhc *rhc); extern inline void dds_rhc_free (struct dds_rhc *rhc);
extern inline int dds_rhc_read (struct dds_rhc *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, dds_readcond *cond); extern inline int dds_rhc_read (struct dds_rhc *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, struct dds_readcond *cond);
extern inline int dds_rhc_take (struct dds_rhc *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, dds_readcond *cond); extern inline int dds_rhc_take (struct dds_rhc *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, struct dds_readcond *cond);
extern inline int dds_rhc_takecdr (struct dds_rhc *rhc, bool lock, struct ddsi_serdata **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t sample_states, uint32_t view_states, uint32_t instance_states, dds_instance_handle_t handle); extern inline int dds_rhc_takecdr (struct dds_rhc *rhc, bool lock, struct ddsi_serdata **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t sample_states, uint32_t view_states, uint32_t instance_states, dds_instance_handle_t handle);
extern inline bool dds_rhc_add_readcondition (struct dds_readcond *cond); extern inline bool dds_rhc_add_readcondition (struct dds_rhc *rhc, struct dds_readcond *cond);
extern inline void dds_rhc_remove_readcondition (struct dds_readcond *cond); extern inline void dds_rhc_remove_readcondition (struct dds_rhc *rhc, struct dds_readcond *cond);
extern inline uint32_t dds_rhc_lock_samples (struct dds_rhc *rhc); extern inline uint32_t dds_rhc_lock_samples (struct dds_rhc *rhc);

View file

@ -25,12 +25,12 @@
#include "dds__entity.h" #include "dds__entity.h"
#include "dds__reader.h" #include "dds__reader.h"
#include "dds__rhc.h" #include "dds/ddsc/dds_rhc.h"
#include "dds__rhc_default.h" #include "dds__rhc_default.h"
#include "dds/ddsi/ddsi_tkmap.h" #include "dds/ddsi/ddsi_tkmap.h"
#include "dds/ddsrt/hopscotch.h" #include "dds/ddsrt/hopscotch.h"
#include "dds/ddsrt/avl.h" #include "dds/ddsrt/avl.h"
#include "dds/ddsi/q_rhc.h" #include "dds/ddsi/ddsi_rhc.h"
#include "dds/ddsi/q_xqos.h" #include "dds/ddsi/q_xqos.h"
#include "dds/ddsi/q_unused.h" #include "dds/ddsi/q_unused.h"
#include "dds/ddsi/q_config.h" #include "dds/ddsi/q_config.h"
@ -263,7 +263,7 @@ struct rhc_instance {
uint32_t disposed_gen; /* bloody generation counters - worst invention of mankind */ uint32_t disposed_gen; /* bloody generation counters - worst invention of mankind */
uint32_t no_writers_gen; /* __/ */ uint32_t no_writers_gen; /* __/ */
int32_t strength; /* "current" ownership strength */ int32_t strength; /* "current" ownership strength */
nn_guid_t wr_guid; /* guid of last writer (if wr_iid != 0 then wr_guid is the corresponding guid, else undef) */ ddsi_guid_t wr_guid; /* guid of last writer (if wr_iid != 0 then wr_guid is the corresponding guid, else undef) */
nn_wctime_t tstamp; /* source time stamp of last update */ nn_wctime_t tstamp; /* source time stamp of last update */
struct rhc_instance *next; /* next non-empty instance in arbitrary ordering */ struct rhc_instance *next; /* next non-empty instance in arbitrary ordering */
struct rhc_instance *prev; struct rhc_instance *prev;
@ -346,30 +346,30 @@ struct trigger_info_post {
}; };
static void dds_rhc_default_free (struct dds_rhc_default *rhc); static void dds_rhc_default_free (struct dds_rhc_default *rhc);
static bool dds_rhc_default_store (struct dds_rhc_default * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk); static bool dds_rhc_default_store (struct dds_rhc_default * __restrict rhc, const struct ddsi_writer_info * __restrict wrinfo, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk);
static void dds_rhc_default_unregister_wr (struct dds_rhc_default * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info); static void dds_rhc_default_unregister_wr (struct dds_rhc_default * __restrict rhc, const struct ddsi_writer_info * __restrict wrinfo);
static void dds_rhc_default_relinquish_ownership (struct dds_rhc_default * __restrict rhc, const uint64_t wr_iid); static void dds_rhc_default_relinquish_ownership (struct dds_rhc_default * __restrict rhc, const uint64_t wr_iid);
static void dds_rhc_default_set_qos (struct dds_rhc_default *rhc, const struct dds_qos *qos); static void dds_rhc_default_set_qos (struct dds_rhc_default *rhc, const struct dds_qos *qos);
static int dds_rhc_default_read (struct dds_rhc_default *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, dds_readcond *cond); static int dds_rhc_default_read (struct dds_rhc_default *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, dds_readcond *cond);
static int dds_rhc_default_take (struct dds_rhc_default *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, dds_readcond *cond); static int dds_rhc_default_take (struct dds_rhc_default *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, dds_readcond *cond);
static int dds_rhc_default_takecdr (struct dds_rhc_default *rhc, bool lock, struct ddsi_serdata ** values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t sample_states, uint32_t view_states, uint32_t instance_states, dds_instance_handle_t handle); static int dds_rhc_default_takecdr (struct dds_rhc_default *rhc, bool lock, struct ddsi_serdata ** values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t sample_states, uint32_t view_states, uint32_t instance_states, dds_instance_handle_t handle);
static bool dds_rhc_default_add_readcondition (dds_readcond *cond); static bool dds_rhc_default_add_readcondition (struct dds_rhc_default *rhc, dds_readcond *cond);
static void dds_rhc_default_remove_readcondition (dds_readcond *cond); static void dds_rhc_default_remove_readcondition (struct dds_rhc_default *rhc, dds_readcond *cond);
static uint32_t dds_rhc_default_lock_samples (struct dds_rhc_default *rhc); static uint32_t dds_rhc_default_lock_samples (struct dds_rhc_default *rhc);
static void dds_rhc_default_free_wrap (struct rhc *rhc) { static void dds_rhc_default_free_wrap (struct ddsi_rhc *rhc) {
dds_rhc_default_free ((struct dds_rhc_default *) rhc); dds_rhc_default_free ((struct dds_rhc_default *) rhc);
} }
static bool dds_rhc_default_store_wrap (struct rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk) { static bool dds_rhc_default_store_wrap (struct ddsi_rhc * __restrict rhc, const struct ddsi_writer_info * __restrict wrinfo, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk) {
return dds_rhc_default_store ((struct dds_rhc_default *) rhc, pwr_info, sample, tk); return dds_rhc_default_store ((struct dds_rhc_default *) rhc, wrinfo, sample, tk);
} }
static void dds_rhc_default_unregister_wr_wrap (struct rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info) { static void dds_rhc_default_unregister_wr_wrap (struct ddsi_rhc * __restrict rhc, const struct ddsi_writer_info * __restrict wrinfo) {
dds_rhc_default_unregister_wr ((struct dds_rhc_default *) rhc, pwr_info); dds_rhc_default_unregister_wr ((struct dds_rhc_default *) rhc, wrinfo);
} }
static void dds_rhc_default_relinquish_ownership_wrap (struct rhc * __restrict rhc, const uint64_t wr_iid) { static void dds_rhc_default_relinquish_ownership_wrap (struct ddsi_rhc * __restrict rhc, const uint64_t wr_iid) {
dds_rhc_default_relinquish_ownership ((struct dds_rhc_default *) rhc, wr_iid); dds_rhc_default_relinquish_ownership ((struct dds_rhc_default *) rhc, wr_iid);
} }
static void dds_rhc_default_set_qos_wrap (struct rhc *rhc, const struct dds_qos *qos) { static void dds_rhc_default_set_qos_wrap (struct ddsi_rhc *rhc, const struct dds_qos *qos) {
dds_rhc_default_set_qos ((struct dds_rhc_default *) rhc, qos); dds_rhc_default_set_qos ((struct dds_rhc_default *) rhc, qos);
} }
static int dds_rhc_default_read_wrap (struct dds_rhc *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, dds_readcond *cond) { static int dds_rhc_default_read_wrap (struct dds_rhc *rhc, bool lock, void **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t mask, dds_instance_handle_t handle, dds_readcond *cond) {
@ -381,11 +381,11 @@ static int dds_rhc_default_take_wrap (struct dds_rhc *rhc, bool lock, void **val
static int dds_rhc_default_takecdr_wrap (struct dds_rhc *rhc, bool lock, struct ddsi_serdata **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t sample_states, uint32_t view_states, uint32_t instance_states, dds_instance_handle_t handle) { static int dds_rhc_default_takecdr_wrap (struct dds_rhc *rhc, bool lock, struct ddsi_serdata **values, dds_sample_info_t *info_seq, uint32_t max_samples, uint32_t sample_states, uint32_t view_states, uint32_t instance_states, dds_instance_handle_t handle) {
return dds_rhc_default_takecdr ((struct dds_rhc_default *) rhc, lock, values, info_seq, max_samples, sample_states, view_states, instance_states, handle); return dds_rhc_default_takecdr ((struct dds_rhc_default *) rhc, lock, values, info_seq, max_samples, sample_states, view_states, instance_states, handle);
} }
static bool dds_rhc_default_add_readcondition_wrap (dds_readcond *cond) { static bool dds_rhc_default_add_readcondition_wrap (struct dds_rhc *rhc, dds_readcond *cond) {
return dds_rhc_default_add_readcondition (cond); return dds_rhc_default_add_readcondition ((struct dds_rhc_default *) rhc, cond);
} }
static void dds_rhc_default_remove_readcondition_wrap (dds_readcond *cond) { static void dds_rhc_default_remove_readcondition_wrap (struct dds_rhc *rhc, dds_readcond *cond) {
dds_rhc_default_remove_readcondition (cond); dds_rhc_default_remove_readcondition ((struct dds_rhc_default *) rhc, cond);
} }
static uint32_t dds_rhc_default_lock_samples_wrap (struct dds_rhc *rhc) { static uint32_t dds_rhc_default_lock_samples_wrap (struct dds_rhc *rhc) {
return dds_rhc_default_lock_samples ((struct dds_rhc_default *) rhc); return dds_rhc_default_lock_samples ((struct dds_rhc_default *) rhc);
@ -758,7 +758,7 @@ static bool trigger_info_differs (const struct dds_rhc_default *rhc, const struc
trig_qc->dec_sample_read != trig_qc->inc_sample_read); trig_qc->dec_sample_read != trig_qc->inc_sample_read);
} }
static bool add_sample (struct dds_rhc_default *rhc, struct rhc_instance *inst, const struct proxy_writer_info *pwr_info, const struct ddsi_serdata *sample, status_cb_data_t *cb_data, struct trigger_info_qcond *trig_qc) static bool add_sample (struct dds_rhc_default *rhc, struct rhc_instance *inst, const struct ddsi_writer_info *wrinfo, const struct ddsi_serdata *sample, status_cb_data_t *cb_data, struct trigger_info_qcond *trig_qc)
{ {
struct rhc_sample *s; struct rhc_sample *s;
@ -832,7 +832,7 @@ static bool add_sample (struct dds_rhc_default *rhc, struct rhc_instance *inst,
} }
s->sample = ddsi_serdata_ref (sample); /* drops const (tho refcount does change) */ s->sample = ddsi_serdata_ref (sample); /* drops const (tho refcount does change) */
s->wr_iid = pwr_info->iid; s->wr_iid = wrinfo->iid;
s->isread = false; s->isread = false;
s->disposed_gen = inst->disposed_gen; s->disposed_gen = inst->disposed_gen;
s->no_writers_gen = inst->no_writers_gen; s->no_writers_gen = inst->no_writers_gen;
@ -867,12 +867,12 @@ static bool content_filter_accepts (const dds_reader *reader, const struct ddsi_
return ret; return ret;
} }
static int inst_accepts_sample_by_writer_guid (const struct rhc_instance *inst, const struct proxy_writer_info *pwr_info) static int inst_accepts_sample_by_writer_guid (const struct rhc_instance *inst, const struct ddsi_writer_info *wrinfo)
{ {
return (inst->wr_iid_islive && inst->wr_iid == pwr_info->iid) || memcmp (&pwr_info->guid, &inst->wr_guid, sizeof (inst->wr_guid)) < 0; return (inst->wr_iid_islive && inst->wr_iid == wrinfo->iid) || memcmp (&wrinfo->guid, &inst->wr_guid, sizeof (inst->wr_guid)) < 0;
} }
static int inst_accepts_sample (const struct dds_rhc_default *rhc, const struct rhc_instance *inst, const struct proxy_writer_info *pwr_info, const struct ddsi_serdata *sample, const bool has_data) static int inst_accepts_sample (const struct dds_rhc_default *rhc, const struct rhc_instance *inst, const struct ddsi_writer_info *wrinfo, const struct ddsi_serdata *sample, const bool has_data)
{ {
if (rhc->by_source_ordering) if (rhc->by_source_ordering)
{ {
@ -884,7 +884,7 @@ static int inst_accepts_sample (const struct dds_rhc_default *rhc, const struct
{ {
return 0; return 0;
} }
else if (inst_accepts_sample_by_writer_guid (inst, pwr_info)) else if (inst_accepts_sample_by_writer_guid (inst, wrinfo))
{ {
/* ok */ /* ok */
} }
@ -893,14 +893,14 @@ static int inst_accepts_sample (const struct dds_rhc_default *rhc, const struct
return 0; return 0;
} }
} }
if (rhc->exclusive_ownership && inst->wr_iid_islive && inst->wr_iid != pwr_info->iid) if (rhc->exclusive_ownership && inst->wr_iid_islive && inst->wr_iid != wrinfo->iid)
{ {
int32_t strength = pwr_info->ownership_strength; int32_t strength = wrinfo->ownership_strength;
if (strength > inst->strength) { if (strength > inst->strength) {
/* ok */ /* ok */
} else if (strength < inst->strength) { } else if (strength < inst->strength) {
return 0; return 0;
} else if (inst_accepts_sample_by_writer_guid (inst, pwr_info)) { } else if (inst_accepts_sample_by_writer_guid (inst, wrinfo)) {
/* ok */ /* ok */
} else { } else {
return 0; return 0;
@ -913,17 +913,17 @@ static int inst_accepts_sample (const struct dds_rhc_default *rhc, const struct
return 1; return 1;
} }
static void update_inst (struct rhc_instance *inst, const struct proxy_writer_info * __restrict pwr_info, bool wr_iid_valid, nn_wctime_t tstamp) static void update_inst (struct rhc_instance *inst, const struct ddsi_writer_info * __restrict wrinfo, bool wr_iid_valid, nn_wctime_t tstamp)
{ {
inst->tstamp = tstamp; inst->tstamp = tstamp;
inst->wr_iid_islive = wr_iid_valid; inst->wr_iid_islive = wr_iid_valid;
if (wr_iid_valid) if (wr_iid_valid)
{ {
inst->wr_iid = pwr_info->iid; inst->wr_iid = wrinfo->iid;
if (inst->wr_iid != pwr_info->iid) if (inst->wr_iid != wrinfo->iid)
inst->wr_guid = pwr_info->guid; inst->wr_guid = wrinfo->guid;
} }
inst->strength = pwr_info->ownership_strength; inst->strength = wrinfo->ownership_strength;
} }
static void drop_instance_noupdate_no_writers (struct dds_rhc_default *rhc, struct rhc_instance *inst) static void drop_instance_noupdate_no_writers (struct dds_rhc_default *rhc, struct rhc_instance *inst)
@ -1109,13 +1109,13 @@ static int rhc_unregister_isreg_w_sideeffects (struct dds_rhc_default *rhc, cons
} }
} }
static int rhc_unregister_updateinst (struct dds_rhc_default *rhc, struct rhc_instance *inst, const struct proxy_writer_info * __restrict pwr_info, nn_wctime_t tstamp, struct trigger_info_qcond *trig_qc, bool *nda) static int rhc_unregister_updateinst (struct dds_rhc_default *rhc, struct rhc_instance *inst, const struct ddsi_writer_info * __restrict wrinfo, nn_wctime_t tstamp, struct trigger_info_qcond *trig_qc, bool *nda)
{ {
assert (inst->wrcount > 0); assert (inst->wrcount > 0);
if (--inst->wrcount > 0) if (--inst->wrcount > 0)
{ {
if (inst->wr_iid_islive && pwr_info->iid == inst->wr_iid) if (inst->wr_iid_islive && wrinfo->iid == inst->wr_iid)
{ {
/* Next register will have to do real work before we have a cached /* Next register will have to do real work before we have a cached
wr_iid again */ wr_iid again */
@ -1142,7 +1142,7 @@ static int rhc_unregister_updateinst (struct dds_rhc_default *rhc, struct rhc_in
if (inst->latest == NULL || inst->latest->isread) if (inst->latest == NULL || inst->latest->isread)
{ {
inst_set_invsample (rhc, inst, trig_qc, nda); inst_set_invsample (rhc, inst, trig_qc, nda);
update_inst (inst, pwr_info, false, tstamp); update_inst (inst, wrinfo, false, tstamp);
} }
if (!inst->isdisposed) if (!inst->isdisposed)
{ {
@ -1164,7 +1164,7 @@ static int rhc_unregister_updateinst (struct dds_rhc_default *rhc, struct rhc_in
TRACE (",#0,empty,nowriters"); TRACE (",#0,empty,nowriters");
assert (inst_is_empty (inst)); assert (inst_is_empty (inst));
inst_set_invsample (rhc, inst, trig_qc, nda); inst_set_invsample (rhc, inst, trig_qc, nda);
update_inst (inst, pwr_info, false, tstamp); update_inst (inst, wrinfo, false, tstamp);
account_for_empty_to_nonempty_transition (rhc, inst); account_for_empty_to_nonempty_transition (rhc, inst);
inst->wr_iid_islive = 0; inst->wr_iid_islive = 0;
return 0; return 0;
@ -1172,18 +1172,18 @@ static int rhc_unregister_updateinst (struct dds_rhc_default *rhc, struct rhc_in
} }
} }
static bool dds_rhc_unregister (struct dds_rhc_default *rhc, struct rhc_instance *inst, const struct proxy_writer_info * __restrict pwr_info, nn_wctime_t tstamp, struct trigger_info_post *post, struct trigger_info_qcond *trig_qc) static bool dds_rhc_unregister (struct dds_rhc_default *rhc, struct rhc_instance *inst, const struct ddsi_writer_info * __restrict wrinfo, nn_wctime_t tstamp, struct trigger_info_post *post, struct trigger_info_qcond *trig_qc)
{ {
bool notify_data_available = false; bool notify_data_available = false;
/* 'post' always gets set; instance may have been freed upon return. */ /* 'post' always gets set; instance may have been freed upon return. */
TRACE (" unregister:"); TRACE (" unregister:");
if (!rhc_unregister_isreg_w_sideeffects (rhc, inst, pwr_info->iid)) if (!rhc_unregister_isreg_w_sideeffects (rhc, inst, wrinfo->iid))
{ {
/* other registrations remain */ /* other registrations remain */
get_trigger_info_cmn (&post->c, inst); get_trigger_info_cmn (&post->c, inst);
} }
else if (rhc_unregister_updateinst (rhc, inst, pwr_info, tstamp, trig_qc, &notify_data_available)) else if (rhc_unregister_updateinst (rhc, inst, wrinfo, tstamp, trig_qc, &notify_data_available))
{ {
/* instance dropped */ /* instance dropped */
init_trigger_info_cmn_nonmatch (&post->c); init_trigger_info_cmn_nonmatch (&post->c);
@ -1196,7 +1196,7 @@ static bool dds_rhc_unregister (struct dds_rhc_default *rhc, struct rhc_instance
return notify_data_available; return notify_data_available;
} }
static struct rhc_instance *alloc_new_instance (const struct dds_rhc_default *rhc, const struct proxy_writer_info *pwr_info, struct ddsi_serdata *serdata, struct ddsi_tkmap_instance *tk) static struct rhc_instance *alloc_new_instance (const struct dds_rhc_default *rhc, const struct ddsi_writer_info *wrinfo, struct ddsi_serdata *serdata, struct ddsi_tkmap_instance *tk)
{ {
struct rhc_instance *inst; struct rhc_instance *inst;
@ -1210,11 +1210,11 @@ static struct rhc_instance *alloc_new_instance (const struct dds_rhc_default *rh
inst->isnew = 1; inst->isnew = 1;
inst->a_sample_free = 1; inst->a_sample_free = 1;
inst->conds = 0; inst->conds = 0;
inst->wr_iid = pwr_info->iid; inst->wr_iid = wrinfo->iid;
inst->wr_iid_islive = (inst->wrcount != 0); inst->wr_iid_islive = (inst->wrcount != 0);
inst->wr_guid = pwr_info->guid; inst->wr_guid = wrinfo->guid;
inst->tstamp = serdata->timestamp; inst->tstamp = serdata->timestamp;
inst->strength = pwr_info->ownership_strength; inst->strength = wrinfo->ownership_strength;
if (rhc->nqconds != 0) if (rhc->nqconds != 0)
{ {
@ -1230,7 +1230,7 @@ static struct rhc_instance *alloc_new_instance (const struct dds_rhc_default *rh
return inst; return inst;
} }
static rhc_store_result_t rhc_store_new_instance (struct rhc_instance **out_inst, struct dds_rhc_default *rhc, const struct proxy_writer_info *pwr_info, struct ddsi_serdata *sample, struct ddsi_tkmap_instance *tk, const bool has_data, status_cb_data_t *cb_data, struct trigger_info_post *post, struct trigger_info_qcond *trig_qc) static rhc_store_result_t rhc_store_new_instance (struct rhc_instance **out_inst, struct dds_rhc_default *rhc, const struct ddsi_writer_info *wrinfo, struct ddsi_serdata *sample, struct ddsi_tkmap_instance *tk, const bool has_data, status_cb_data_t *cb_data, struct trigger_info_post *post, struct trigger_info_qcond *trig_qc)
{ {
struct rhc_instance *inst; struct rhc_instance *inst;
int ret; int ret;
@ -1265,10 +1265,10 @@ static rhc_store_result_t rhc_store_new_instance (struct rhc_instance **out_inst
return RHC_REJECTED; return RHC_REJECTED;
} }
inst = alloc_new_instance (rhc, pwr_info, sample, tk); inst = alloc_new_instance (rhc, wrinfo, sample, tk);
if (has_data) if (has_data)
{ {
if (!add_sample (rhc, inst, pwr_info, sample, cb_data, trig_qc)) if (!add_sample (rhc, inst, wrinfo, sample, cb_data, trig_qc))
{ {
free_empty_instance (inst, rhc); free_empty_instance (inst, rhc);
return RHC_REJECTED; return RHC_REJECTED;
@ -1298,9 +1298,9 @@ static rhc_store_result_t rhc_store_new_instance (struct rhc_instance **out_inst
delivered (true unless a reliable sample rejected). delivered (true unless a reliable sample rejected).
*/ */
static bool dds_rhc_default_store (struct dds_rhc_default * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk) static bool dds_rhc_default_store (struct dds_rhc_default * __restrict rhc, const struct ddsi_writer_info * __restrict wrinfo, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk)
{ {
const uint64_t wr_iid = pwr_info->iid; const uint64_t wr_iid = wrinfo->iid;
const unsigned statusinfo = sample->statusinfo; const unsigned statusinfo = sample->statusinfo;
const bool has_data = (sample->kind == SDK_DATA); const bool has_data = (sample->kind == SDK_DATA);
const int is_dispose = (statusinfo & NN_STATUSINFO_DISPOSE) != 0; const int is_dispose = (statusinfo & NN_STATUSINFO_DISPOSE) != 0;
@ -1347,7 +1347,7 @@ static bool dds_rhc_default_store (struct dds_rhc_default * __restrict rhc, cons
else else
{ {
TRACE (" new instance"); TRACE (" new instance");
stored = rhc_store_new_instance (&inst, rhc, pwr_info, sample, tk, has_data, &cb_data, &post, &trig_qc); stored = rhc_store_new_instance (&inst, rhc, wrinfo, sample, tk, has_data, &cb_data, &post, &trig_qc);
if (stored != RHC_STORED) if (stored != RHC_STORED)
{ {
goto error_or_nochange; goto error_or_nochange;
@ -1356,7 +1356,7 @@ static bool dds_rhc_default_store (struct dds_rhc_default * __restrict rhc, cons
notify_data_available = true; notify_data_available = true;
} }
} }
else if (!inst_accepts_sample (rhc, inst, pwr_info, sample, has_data)) else if (!inst_accepts_sample (rhc, inst, wrinfo, sample, has_data))
{ {
/* Rejected samples (and disposes) should still register the writer; /* Rejected samples (and disposes) should still register the writer;
unregister *must* be processed, or we have a memory leak. (We unregister *must* be processed, or we have a memory leak. (We
@ -1372,7 +1372,7 @@ static bool dds_rhc_default_store (struct dds_rhc_default * __restrict rhc, cons
} }
if (statusinfo & NN_STATUSINFO_UNREGISTER) if (statusinfo & NN_STATUSINFO_UNREGISTER)
{ {
if (dds_rhc_unregister (rhc, inst, pwr_info, sample->timestamp, &post, &trig_qc)) if (dds_rhc_unregister (rhc, inst, wrinfo, sample->timestamp, &post, &trig_qc))
notify_data_available = true; notify_data_available = true;
} }
else else
@ -1450,7 +1450,7 @@ static bool dds_rhc_default_store (struct dds_rhc_default * __restrict rhc, cons
if (has_data) if (has_data)
{ {
TRACE (" add_sample"); TRACE (" add_sample");
if (!add_sample (rhc, inst, pwr_info, sample, &cb_data, &trig_qc)) if (!add_sample (rhc, inst, wrinfo, sample, &cb_data, &trig_qc))
{ {
TRACE ("(reject)"); TRACE ("(reject)");
stored = RHC_REJECTED; stored = RHC_REJECTED;
@ -1469,7 +1469,7 @@ static bool dds_rhc_default_store (struct dds_rhc_default * __restrict rhc, cons
if (inst_became_disposed && inst->latest == NULL) if (inst_became_disposed && inst->latest == NULL)
inst_set_invsample (rhc, inst, &trig_qc, &notify_data_available); inst_set_invsample (rhc, inst, &trig_qc, &notify_data_available);
update_inst (inst, pwr_info, true, sample->timestamp); update_inst (inst, wrinfo, true, sample->timestamp);
/* Can only add samples => only need to give special treatment /* Can only add samples => only need to give special treatment
to instances that were empty before. It is, however, not to instances that were empty before. It is, however, not
@ -1513,7 +1513,7 @@ static bool dds_rhc_default_store (struct dds_rhc_default * __restrict rhc, cons
mean an application reading "x" after the write and reading it mean an application reading "x" after the write and reading it
again after the unregister will see a change in the again after the unregister will see a change in the
no_writers_generation field? */ no_writers_generation field? */
dds_rhc_unregister (rhc, inst, pwr_info, sample->timestamp, &post, &trig_qc); dds_rhc_unregister (rhc, inst, wrinfo, sample->timestamp, &post, &trig_qc);
} }
else else
{ {
@ -1559,7 +1559,7 @@ error_or_nochange:
return delivered; return delivered;
} }
static void dds_rhc_default_unregister_wr (struct dds_rhc_default * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info) static void dds_rhc_default_unregister_wr (struct dds_rhc_default * __restrict rhc, const struct ddsi_writer_info * __restrict wrinfo)
{ {
/* Only to be called when writer with ID WR_IID has died. /* Only to be called when writer with ID WR_IID has died.
@ -1579,8 +1579,8 @@ static void dds_rhc_default_unregister_wr (struct dds_rhc_default * __restrict r
bool notify_data_available = false; bool notify_data_available = false;
struct rhc_instance *inst; struct rhc_instance *inst;
struct ddsrt_hh_iter iter; struct ddsrt_hh_iter iter;
const uint64_t wr_iid = pwr_info->iid; const uint64_t wr_iid = wrinfo->iid;
const int auto_dispose = pwr_info->auto_dispose; const int auto_dispose = wrinfo->auto_dispose;
size_t ntriggers = SIZE_MAX; size_t ntriggers = SIZE_MAX;
@ -1620,7 +1620,7 @@ static void dds_rhc_default_unregister_wr (struct dds_rhc_default * __restrict r
} }
} }
dds_rhc_unregister (rhc, inst, pwr_info, inst->tstamp, &post, &trig_qc); dds_rhc_unregister (rhc, inst, wrinfo, inst->tstamp, &post, &trig_qc);
TRACE ("\n"); TRACE ("\n");
@ -2292,13 +2292,12 @@ static bool cond_is_sample_state_dependent (const struct dds_readcond *cond)
} }
} }
static bool dds_rhc_default_add_readcondition (dds_readcond *cond) static bool dds_rhc_default_add_readcondition (struct dds_rhc_default *rhc, dds_readcond *cond)
{ {
/* On the assumption that a readcondition will be attached to a /* On the assumption that a readcondition will be attached to a
waitset for nearly all of its life, we keep track of all waitset for nearly all of its life, we keep track of all
readconditions on a reader in one set, without distinguishing readconditions on a reader in one set, without distinguishing
between those attached to a waitset or not. */ between those attached to a waitset or not. */
struct dds_rhc_default *rhc = (struct dds_rhc_default *) cond->m_rhc;
struct ddsrt_hh_iter it; struct ddsrt_hh_iter it;
assert ((dds_entity_kind (&cond->m_entity) == DDS_KIND_COND_READ && cond->m_query.m_filter == 0) || assert ((dds_entity_kind (&cond->m_entity) == DDS_KIND_COND_READ && cond->m_query.m_filter == 0) ||
@ -2397,9 +2396,8 @@ static bool dds_rhc_default_add_readcondition (dds_readcond *cond)
return true; return true;
} }
static void dds_rhc_default_remove_readcondition (dds_readcond *cond) static void dds_rhc_default_remove_readcondition (struct dds_rhc_default *rhc, dds_readcond *cond)
{ {
struct dds_rhc_default *rhc = (struct dds_rhc_default *) cond->m_rhc;
dds_readcond **ptr; dds_readcond **ptr;
ddsrt_mutex_lock (&rhc->lock); ddsrt_mutex_lock (&rhc->lock);
ptr = &rhc->conds; ptr = &rhc->conds;

View file

@ -32,7 +32,7 @@ static const uint64_t unihashconsts[] = {
UINT64_C (16728792139623414127) UINT64_C (16728792139623414127)
}; };
static uint32_t hash_guid (const nn_guid_t *g) static uint32_t hash_guid (const ddsi_guid_t *g)
{ {
return return
(uint32_t) (((((uint32_t) g->prefix.u[0] + unihashconsts[0]) * (uint32_t) (((((uint32_t) g->prefix.u[0] + unihashconsts[0]) *
@ -131,7 +131,7 @@ static struct ddsi_serdata *ddsi_serdata_builtin_from_keyhash (const struct ddsi
/* FIXME: not quite elegant to manage the creation of a serdata for a built-in topic via this function, but I also find it quite unelegant to let from_sample read straight from the underlying internal entity, and to_sample convert to the external format ... I could claim the internal entity is the "serialised form", but that forces wrapping it in a fragchain in one way or another, which, though possible, is also a bit lacking in elegance. */ /* FIXME: not quite elegant to manage the creation of a serdata for a built-in topic via this function, but I also find it quite unelegant to let from_sample read straight from the underlying internal entity, and to_sample convert to the external format ... I could claim the internal entity is the "serialised form", but that forces wrapping it in a fragchain in one way or another, which, though possible, is also a bit lacking in elegance. */
const struct ddsi_sertopic_builtintopic *tp = (const struct ddsi_sertopic_builtintopic *)tpcmn; const struct ddsi_sertopic_builtintopic *tp = (const struct ddsi_sertopic_builtintopic *)tpcmn;
/* keyhash must in host format (which the GUIDs always are internally) */ /* keyhash must in host format (which the GUIDs always are internally) */
struct entity_common *entity = ephash_lookup_guid_untyped (tp->gv->guid_hash, (const nn_guid_t *) keyhash->value); struct entity_common *entity = ephash_lookup_guid_untyped (tp->gv->guid_hash, (const ddsi_guid_t *) keyhash->value);
struct ddsi_serdata_builtintopic *d = serdata_builtin_new(tp, entity ? SDK_DATA : SDK_KEY); struct ddsi_serdata_builtintopic *d = serdata_builtin_new(tp, entity ? SDK_DATA : SDK_KEY);
memcpy (&d->key, keyhash->value, sizeof (d->key)); memcpy (&d->key, keyhash->value, sizeof (d->key));
if (entity) if (entity)
@ -175,9 +175,9 @@ static struct ddsi_serdata *serdata_builtin_to_topicless (const struct ddsi_serd
return ddsi_serdata_ref (serdata_common); return ddsi_serdata_ref (serdata_common);
} }
static void convkey (dds_builtintopic_guid_t *key, const nn_guid_t *guid) static void convkey (dds_builtintopic_guid_t *key, const ddsi_guid_t *guid)
{ {
nn_guid_t tmp; ddsi_guid_t tmp;
tmp = nn_hton_guid (*guid); tmp = nn_hton_guid (*guid);
memcpy (key, &tmp, sizeof (*key)); memcpy (key, &tmp, sizeof (*key));
} }
@ -214,7 +214,7 @@ static bool to_sample_pp (const struct ddsi_serdata_builtintopic *d, struct dds_
static bool to_sample_endpoint (const struct ddsi_serdata_builtintopic *d, struct dds_builtintopic_endpoint *sample) static bool to_sample_endpoint (const struct ddsi_serdata_builtintopic *d, struct dds_builtintopic_endpoint *sample)
{ {
nn_guid_t ppguid; ddsi_guid_t ppguid;
convkey (&sample->key, &d->key); convkey (&sample->key, &d->key);
ppguid = d->key; ppguid = d->key;
ppguid.entityid.u = NN_ENTITYID_PARTICIPANT; ppguid.entityid.u = NN_ENTITYID_PARTICIPANT;

View file

@ -18,7 +18,7 @@
#include "dds__querycond.h" #include "dds__querycond.h"
#include "dds__readcond.h" #include "dds__readcond.h"
#include "dds__init.h" #include "dds__init.h"
#include "dds__rhc.h" #include "dds/ddsc/dds_rhc.h"
#include "dds/ddsi/ddsi_iid.h" #include "dds/ddsi/ddsi_iid.h"
DEFINE_ENTITY_LOCK_UNLOCK_ONLY (static, dds_waitset, DDS_KIND_WAITSET) DEFINE_ENTITY_LOCK_UNLOCK_ONLY (static, dds_waitset, DDS_KIND_WAITSET)

View file

@ -16,7 +16,7 @@
#include "dds/ddsi/ddsi_tkmap.h" #include "dds/ddsi/ddsi_tkmap.h"
#include "dds/ddsi/q_thread.h" #include "dds/ddsi/q_thread.h"
#include "dds/ddsi/q_xmsg.h" #include "dds/ddsi/q_xmsg.h"
#include "dds/ddsi/q_rhc.h" #include "dds/ddsi/ddsi_rhc.h"
#include "dds/ddsi/ddsi_serdata.h" #include "dds/ddsi/ddsi_serdata.h"
#include "dds__stream.h" #include "dds__stream.h"
#include "dds/ddsi/q_transmit.h" #include "dds/ddsi/q_transmit.h"
@ -71,9 +71,9 @@ dds_return_t dds_write_ts (dds_entity_t writer, const void *data, dds_time_t tim
return ret; return ret;
} }
static dds_return_t try_store (struct rhc *rhc, const struct proxy_writer_info *pwr_info, struct ddsi_serdata *payload, struct ddsi_tkmap_instance *tk, dds_duration_t *max_block_ms) static dds_return_t try_store (struct ddsi_rhc *rhc, const struct ddsi_writer_info *pwr_info, struct ddsi_serdata *payload, struct ddsi_tkmap_instance *tk, dds_duration_t *max_block_ms)
{ {
while (! rhc_store (rhc, pwr_info, payload, tk)) while (! ddsi_rhc_store (rhc, pwr_info, payload, tk))
{ {
if (*max_block_ms > 0) if (*max_block_ms > 0)
{ {
@ -98,8 +98,8 @@ static dds_return_t deliver_locally (struct writer *wr, struct ddsi_serdata *pay
if (rdary[0]) if (rdary[0])
{ {
dds_duration_t max_block_ms = wr->xqos->reliability.max_blocking_time; dds_duration_t max_block_ms = wr->xqos->reliability.max_blocking_time;
struct proxy_writer_info pwr_info; struct ddsi_writer_info pwr_info;
make_proxy_writer_info (&pwr_info, &wr->e, wr->xqos); ddsi_make_writer_info (&pwr_info, &wr->e, wr->xqos);
for (uint32_t i = 0; rdary[i]; i++) { for (uint32_t i = 0; rdary[i]; i++) {
DDS_CTRACE (&wr->e.gv->logconfig, "reader "PGUIDFMT"\n", PGUID (rdary[i]->e.guid)); DDS_CTRACE (&wr->e.gv->logconfig, "reader "PGUIDFMT"\n", PGUID (rdary[i]->e.guid));
if ((ret = try_store (rdary[i]->rhc, &pwr_info, payload, tk, &max_block_ms)) != DDS_RETCODE_OK) if ((ret = try_store (rdary[i]->rhc, &pwr_info, payload, tk, &max_block_ms)) != DDS_RETCODE_OK)
@ -120,11 +120,11 @@ static dds_return_t deliver_locally (struct writer *wr, struct ddsi_serdata *pay
reliable samples that are rejected are simply discarded. */ reliable samples that are rejected are simply discarded. */
ddsrt_avl_iter_t it; ddsrt_avl_iter_t it;
struct pwr_rd_match *m; struct pwr_rd_match *m;
struct proxy_writer_info pwr_info; struct ddsi_writer_info wrinfo;
const struct ephash *gh = wr->e.gv->guid_hash; const struct ephash *gh = wr->e.gv->guid_hash;
dds_duration_t max_block_ms = wr->xqos->reliability.max_blocking_time; dds_duration_t max_block_ms = wr->xqos->reliability.max_blocking_time;
ddsrt_mutex_unlock (&wr->rdary.rdary_lock); ddsrt_mutex_unlock (&wr->rdary.rdary_lock);
make_proxy_writer_info (&pwr_info, &wr->e, wr->xqos); ddsi_make_writer_info (&wrinfo, &wr->e, wr->xqos);
ddsrt_mutex_lock (&wr->e.lock); ddsrt_mutex_lock (&wr->e.lock);
for (m = ddsrt_avl_iter_first (&wr_local_readers_treedef, &wr->local_readers, &it); m != NULL; m = ddsrt_avl_iter_next (&it)) for (m = ddsrt_avl_iter_first (&wr_local_readers_treedef, &wr->local_readers, &it); m != NULL; m = ddsrt_avl_iter_next (&it))
{ {
@ -133,7 +133,7 @@ static dds_return_t deliver_locally (struct writer *wr, struct ddsi_serdata *pay
{ {
DDS_CTRACE (&wr->e.gv->logconfig, "reader-via-guid "PGUIDFMT"\n", PGUID (rd->e.guid)); DDS_CTRACE (&wr->e.gv->logconfig, "reader-via-guid "PGUIDFMT"\n", PGUID (rd->e.guid));
/* Copied the return value ignore from DDSI deliver_user_data () function. */ /* Copied the return value ignore from DDSI deliver_user_data () function. */
if ((ret = try_store (rd->rhc, &pwr_info, payload, tk, &max_block_ms)) != DDS_RETCODE_OK) if ((ret = try_store (rd->rhc, &wrinfo, payload, tk, &max_block_ms)) != DDS_RETCODE_OK)
break; break;
} }
} }

View file

@ -26,6 +26,7 @@ PREPEND(srcs_ddsi "${CMAKE_CURRENT_LIST_DIR}/src"
ddsi_tkmap.c ddsi_tkmap.c
ddsi_vendor.c ddsi_vendor.c
ddsi_threadmon.c ddsi_threadmon.c
ddsi_rhc.c
q_addrset.c q_addrset.c
q_bitset_inlines.c q_bitset_inlines.c
q_bswap.c q_bswap.c
@ -53,7 +54,6 @@ PREPEND(srcs_ddsi "${CMAKE_CURRENT_LIST_DIR}/src"
q_transmit.c q_transmit.c
q_inverse_uint32_set.c q_inverse_uint32_set.c
q_whc.c q_whc.c
q_rhc.c
q_xevent.c q_xevent.c
q_xmsg.c q_xmsg.c
q_freelist.c q_freelist.c
@ -78,6 +78,8 @@ PREPEND(hdrs_private_ddsi "${CMAKE_CURRENT_LIST_DIR}/include/dds/ddsi"
ddsi_vendor.h ddsi_vendor.h
ddsi_threadmon.h ddsi_threadmon.h
ddsi_builtin_topic_if.h ddsi_builtin_topic_if.h
ddsi_rhc.h
ddsi_guid.h
q_addrset.h q_addrset.h
q_bitset.h q_bitset.h
q_bswap.h q_bswap.h
@ -102,7 +104,6 @@ PREPEND(hdrs_private_ddsi "${CMAKE_CURRENT_LIST_DIR}/include/dds/ddsi"
q_qosmatch.h q_qosmatch.h
q_radmin.h q_radmin.h
q_receive.h q_receive.h
q_rhc.h
q_rtps.h q_rtps.h
q_security.h q_security.h
q_sockwaitset.h q_sockwaitset.h

View file

@ -22,24 +22,24 @@ extern "C" {
struct entity_common; struct entity_common;
struct ddsi_tkmap_instance; struct ddsi_tkmap_instance;
struct ddsi_sertopic; struct ddsi_sertopic;
struct nn_guid; struct ddsi_guid;
struct ddsi_builtin_topic_interface { struct ddsi_builtin_topic_interface {
void *arg; void *arg;
bool (*builtintopic_is_builtintopic) (const struct ddsi_sertopic *topic, void *arg); bool (*builtintopic_is_builtintopic) (const struct ddsi_sertopic *topic, void *arg);
bool (*builtintopic_is_visible) (const struct nn_guid *guid, nn_vendorid_t vendorid, void *arg); bool (*builtintopic_is_visible) (const struct ddsi_guid *guid, nn_vendorid_t vendorid, void *arg);
struct ddsi_tkmap_instance * (*builtintopic_get_tkmap_entry) (const struct nn_guid *guid, void *arg); struct ddsi_tkmap_instance * (*builtintopic_get_tkmap_entry) (const struct ddsi_guid *guid, void *arg);
void (*builtintopic_write) (const struct entity_common *e, nn_wctime_t timestamp, bool alive, void *arg); void (*builtintopic_write) (const struct entity_common *e, nn_wctime_t timestamp, bool alive, void *arg);
}; };
inline bool builtintopic_is_visible (const struct ddsi_builtin_topic_interface *btif, const struct nn_guid *guid, nn_vendorid_t vendorid) { inline bool builtintopic_is_visible (const struct ddsi_builtin_topic_interface *btif, const struct ddsi_guid *guid, nn_vendorid_t vendorid) {
return btif ? btif->builtintopic_is_visible (guid, vendorid, btif->arg) : false; return btif ? btif->builtintopic_is_visible (guid, vendorid, btif->arg) : false;
} }
inline bool builtintopic_is_builtintopic (const struct ddsi_builtin_topic_interface *btif, const struct ddsi_sertopic *topic) { inline bool builtintopic_is_builtintopic (const struct ddsi_builtin_topic_interface *btif, const struct ddsi_sertopic *topic) {
return btif ? btif->builtintopic_is_builtintopic (topic, btif->arg) : false; return btif ? btif->builtintopic_is_builtintopic (topic, btif->arg) : false;
} }
inline struct ddsi_tkmap_instance *builtintopic_get_tkmap_entry (const struct ddsi_builtin_topic_interface *btif, const struct nn_guid *guid) { inline struct ddsi_tkmap_instance *builtintopic_get_tkmap_entry (const struct ddsi_builtin_topic_interface *btif, const struct ddsi_guid *guid) {
return btif ? btif->builtintopic_get_tkmap_entry (guid, btif->arg) : NULL; return btif ? btif->builtintopic_get_tkmap_entry (guid, btif->arg) : NULL;
} }
inline void builtintopic_write (const struct ddsi_builtin_topic_interface *btif, const struct entity_common *e, nn_wctime_t timestamp, bool alive) { inline void builtintopic_write (const struct ddsi_builtin_topic_interface *btif, const struct entity_common *e, nn_wctime_t timestamp, bool alive) {

View file

@ -0,0 +1,37 @@
/*
* Copyright(c) 2019 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 DDSI_GUID_H
#define DDSI_GUID_H
#include <stdint.h>
#if defined (__cplusplus)
extern "C" {
#endif
typedef union ddsi_guid_prefix {
unsigned char s[12];
uint32_t u[3];
} ddsi_guid_prefix_t;
typedef union ddsi_entityid {
uint32_t u;
} ddsi_entityid_t;
typedef struct ddsi_guid {
ddsi_guid_prefix_t prefix;
ddsi_entityid_t entityid;
} ddsi_guid_t;
#if defined (__cplusplus)
}
#endif
#endif

View file

@ -0,0 +1,81 @@
/*
* 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 DDSI_RHC_H
#define DDSI_RHC_H
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
#include "dds/export.h"
/* DDS_EXPORT inline i.c.w. __attributes__((visibility...)) and some compilers: */
#include "dds/ddsrt/attributes.h"
#include "dds/ddsi/ddsi_guid.h"
#if defined (__cplusplus)
extern "C" {
#endif
struct dds_qos;
struct ddsi_rhc;
struct ddsi_tkmap_instance;
struct ddsi_serdata;
struct ddsi_sertopic;
struct ddsi_writer_info
{
ddsi_guid_t guid;
bool auto_dispose;
int32_t ownership_strength;
uint64_t iid;
};
typedef void (*ddsi_rhc_free_t) (struct ddsi_rhc *rhc);
typedef bool (*ddsi_rhc_store_t) (struct ddsi_rhc * __restrict rhc, const struct ddsi_writer_info * __restrict wrinfo, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk);
typedef void (*ddsi_rhc_unregister_wr_t) (struct ddsi_rhc * __restrict rhc, const struct ddsi_writer_info * __restrict wrinfo);
typedef void (*ddsi_rhc_relinquish_ownership_t) (struct ddsi_rhc * __restrict rhc, const uint64_t wr_iid);
typedef void (*ddsi_rhc_set_qos_t) (struct ddsi_rhc *rhc, const struct dds_qos *qos);
struct ddsi_rhc_ops {
ddsi_rhc_store_t store;
ddsi_rhc_unregister_wr_t unregister_wr;
ddsi_rhc_relinquish_ownership_t relinquish_ownership;
ddsi_rhc_set_qos_t set_qos;
ddsi_rhc_free_t free;
};
struct ddsi_rhc {
const struct ddsi_rhc_ops *ops;
};
DDS_EXPORT inline bool ddsi_rhc_store (struct ddsi_rhc * __restrict rhc, const struct ddsi_writer_info * __restrict pwr_info, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk) {
return rhc->ops->store (rhc, pwr_info, sample, tk);
}
DDS_EXPORT inline void ddsi_rhc_unregister_wr (struct ddsi_rhc * __restrict rhc, const struct ddsi_writer_info * __restrict pwr_info) {
rhc->ops->unregister_wr (rhc, pwr_info);
}
DDS_EXPORT inline void ddsi_rhc_relinquish_ownership (struct ddsi_rhc * __restrict rhc, const uint64_t wr_iid) {
rhc->ops->relinquish_ownership (rhc, wr_iid);
}
DDS_EXPORT inline void ddsi_rhc_set_qos (struct ddsi_rhc *rhc, const struct dds_qos *qos) {
rhc->ops->set_qos (rhc, qos);
}
DDS_EXPORT inline void ddsi_rhc_free (struct ddsi_rhc *rhc) {
rhc->ops->free (rhc);
}
#if defined (__cplusplus)
}
#endif
#endif /* DDSI_RHC_H */

View file

@ -88,12 +88,12 @@ inline void bswapSN (nn_sequence_number_t *sn)
#define fromBE8u(x) (x) #define fromBE8u(x) (x)
#endif #endif
nn_guid_prefix_t nn_hton_guid_prefix (nn_guid_prefix_t p); ddsi_guid_prefix_t nn_hton_guid_prefix (ddsi_guid_prefix_t p);
nn_guid_prefix_t nn_ntoh_guid_prefix (nn_guid_prefix_t p); ddsi_guid_prefix_t nn_ntoh_guid_prefix (ddsi_guid_prefix_t p);
nn_entityid_t nn_hton_entityid (nn_entityid_t e); ddsi_entityid_t nn_hton_entityid (ddsi_entityid_t e);
nn_entityid_t nn_ntoh_entityid (nn_entityid_t e); ddsi_entityid_t nn_ntoh_entityid (ddsi_entityid_t e);
nn_guid_t nn_hton_guid (nn_guid_t g); ddsi_guid_t nn_hton_guid (ddsi_guid_t g);
nn_guid_t nn_ntoh_guid (nn_guid_t g); ddsi_guid_t nn_ntoh_guid (ddsi_guid_t g);
void bswap_sequence_number_set_hdr (nn_sequence_number_set_header_t *snset); void bswap_sequence_number_set_hdr (nn_sequence_number_set_header_t *snset);
void bswap_sequence_number_set_bitmap (nn_sequence_number_set_header_t *snset, uint32_t *bits); void bswap_sequence_number_set_bitmap (nn_sequence_number_set_header_t *snset, uint32_t *bits);

View file

@ -36,7 +36,7 @@ int sedp_dispose_unregister_reader (struct reader *rd);
int sedp_write_topic (struct participant *pp, const struct nn_plist *datap); int sedp_write_topic (struct participant *pp, const struct nn_plist *datap);
int sedp_write_cm_participant (struct participant *pp, int alive); int sedp_write_cm_participant (struct participant *pp, int alive);
int builtins_dqueue_handler (const struct nn_rsample_info *sampleinfo, const struct nn_rdata *fragchain, const nn_guid_t *rdguid, void *qarg); int builtins_dqueue_handler (const struct nn_rsample_info *sampleinfo, const struct nn_rdata *fragchain, const ddsi_guid_t *rdguid, void *qarg);
#if defined (__cplusplus) #if defined (__cplusplus)
} }

View file

@ -59,12 +59,12 @@ typedef void (*status_cb_t) (void *entity, const status_cb_data_t *data);
struct prd_wr_match { struct prd_wr_match {
ddsrt_avl_node_t avlnode; ddsrt_avl_node_t avlnode;
nn_guid_t wr_guid; ddsi_guid_t wr_guid;
}; };
struct rd_pwr_match { struct rd_pwr_match {
ddsrt_avl_node_t avlnode; ddsrt_avl_node_t avlnode;
nn_guid_t pwr_guid; ddsi_guid_t pwr_guid;
#ifdef DDSI_INCLUDE_SSM #ifdef DDSI_INCLUDE_SSM
nn_locator_t ssm_mc_loc; nn_locator_t ssm_mc_loc;
nn_locator_t ssm_src_loc; nn_locator_t ssm_src_loc;
@ -73,17 +73,17 @@ struct rd_pwr_match {
struct wr_rd_match { struct wr_rd_match {
ddsrt_avl_node_t avlnode; ddsrt_avl_node_t avlnode;
nn_guid_t rd_guid; ddsi_guid_t rd_guid;
}; };
struct rd_wr_match { struct rd_wr_match {
ddsrt_avl_node_t avlnode; ddsrt_avl_node_t avlnode;
nn_guid_t wr_guid; ddsi_guid_t wr_guid;
}; };
struct wr_prd_match { struct wr_prd_match {
ddsrt_avl_node_t avlnode; ddsrt_avl_node_t avlnode;
nn_guid_t prd_guid; /* guid of the proxy reader */ ddsi_guid_t prd_guid; /* guid of the proxy reader */
unsigned assumed_in_sync: 1; /* set to 1 upon receipt of ack not nack'ing msgs */ unsigned assumed_in_sync: 1; /* set to 1 upon receipt of ack not nack'ing msgs */
unsigned has_replied_to_hb: 1; /* we must keep sending HBs until all readers have this set */ unsigned has_replied_to_hb: 1; /* we must keep sending HBs until all readers have this set */
unsigned all_have_replied_to_hb: 1; /* true iff 'has_replied_to_hb' for all readers in subtree */ unsigned all_have_replied_to_hb: 1; /* true iff 'has_replied_to_hb' for all readers in subtree */
@ -92,7 +92,7 @@ struct wr_prd_match {
seqno_t max_seq; /* sort-of highest ack'd seq nr in subtree (see augment function) */ seqno_t max_seq; /* sort-of highest ack'd seq nr in subtree (see augment function) */
seqno_t seq; /* highest acknowledged seq nr */ seqno_t seq; /* highest acknowledged seq nr */
int num_reliable_readers_where_seq_equals_max; int num_reliable_readers_where_seq_equals_max;
nn_guid_t arbitrary_unacked_reader; ddsi_guid_t arbitrary_unacked_reader;
nn_count_t next_acknack; /* next acceptable acknack sequence number */ nn_count_t next_acknack; /* next acceptable acknack sequence number */
nn_count_t next_nackfrag; /* next acceptable nackfrag sequence number */ nn_count_t next_nackfrag; /* next acceptable nackfrag sequence number */
nn_etime_t t_acknack_accepted; /* (local) time an acknack was last accepted */ nn_etime_t t_acknack_accepted; /* (local) time an acknack was last accepted */
@ -110,7 +110,7 @@ enum pwr_rd_match_syncstate {
struct pwr_rd_match { struct pwr_rd_match {
ddsrt_avl_node_t avlnode; ddsrt_avl_node_t avlnode;
nn_guid_t rd_guid; ddsi_guid_t rd_guid;
nn_mtime_t tcreate; nn_mtime_t tcreate;
nn_count_t count; /* most recent acknack sequence number */ nn_count_t count; /* most recent acknack sequence number */
nn_count_t next_heartbeat; /* next acceptable heartbeat (see also add_proxy_writer_to_reader) */ nn_count_t next_heartbeat; /* next acceptable heartbeat (see also add_proxy_writer_to_reader) */
@ -134,7 +134,7 @@ struct ddsi_tkmap_instance;
struct entity_common { struct entity_common {
enum entity_kind kind; enum entity_kind kind;
nn_guid_t guid; ddsi_guid_t guid;
nn_wctime_t tupdate; /* timestamp of last update */ nn_wctime_t tupdate; /* timestamp of last update */
char *name; char *name;
uint64_t iid; uint64_t iid;
@ -188,7 +188,7 @@ struct participant
struct endpoint_common { struct endpoint_common {
struct participant *pp; struct participant *pp;
nn_guid_t group_guid; ddsi_guid_t group_guid;
}; };
struct generic_endpoint { /* FIXME: currently only local endpoints; proxies use entity_common + proxy_endpoint common */ struct generic_endpoint { /* FIXME: currently only local endpoints; proxies use entity_common + proxy_endpoint common */
@ -281,7 +281,7 @@ struct reader
struct endpoint_common c; struct endpoint_common c;
status_cb_t status_cb; status_cb_t status_cb;
void * status_cb_entity; void * status_cb_entity;
struct rhc * rhc; /* reader history, tracks registrations and data */ struct ddsi_rhc * rhc; /* reader history, tracks registrations and data */
struct dds_qos *xqos; struct dds_qos *xqos;
unsigned reliable: 1; /* 1 iff reader is reliable */ unsigned reliable: 1; /* 1 iff reader is reliable */
unsigned handle_as_transient_local: 1; /* 1 iff reader wants historical data from proxy writers */ unsigned handle_as_transient_local: 1; /* 1 iff reader wants historical data from proxy writers */
@ -306,7 +306,7 @@ struct proxy_participant
nn_vendorid_t vendor; /* vendor code from discovery */ nn_vendorid_t vendor; /* vendor code from discovery */
unsigned bes; /* built-in endpoint set */ unsigned bes; /* built-in endpoint set */
unsigned prismtech_bes; /* prismtech-specific extension of built-in endpoints 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 */ ddsi_guid_t privileged_pp_guid; /* if this PP depends on another PP for its SEDP writing */
struct nn_plist *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 */ 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_default; /* default address set to use for user data traffic */
@ -333,7 +333,7 @@ struct proxy_participant
participant. */ participant. */
struct proxy_group { struct proxy_group {
ddsrt_avl_node_t avlnode; ddsrt_avl_node_t avlnode;
nn_guid_t guid; ddsi_guid_t guid;
char *name; char *name;
struct proxy_participant *proxypp; /* uncounted backref to proxy participant */ struct proxy_participant *proxypp; /* uncounted backref to proxy participant */
struct dds_qos *xqos; /* publisher/subscriber QoS */ struct dds_qos *xqos; /* publisher/subscriber QoS */
@ -346,7 +346,7 @@ struct proxy_endpoint_common
struct proxy_endpoint_common *prev_ep; /* prev / -- this is in arbitrary ordering */ struct proxy_endpoint_common *prev_ep; /* prev / -- this is in arbitrary ordering */
struct dds_qos *xqos; /* proxy endpoint QoS lives here; FIXME: local ones should have it moved to common as well */ struct dds_qos *xqos; /* proxy endpoint QoS lives here; FIXME: local ones should have it moved to common as well */
struct addrset *as; /* address set to use for communicating with this endpoint */ struct addrset *as; /* address set to use for communicating with this endpoint */
nn_guid_t group_guid; /* 0:0:0:0 if not available */ ddsi_guid_t group_guid; /* 0:0:0:0 if not available */
nn_vendorid_t vendor; /* cached from proxypp->vendor */ nn_vendorid_t vendor; /* cached from proxypp->vendor */
seqno_t seq; /* sequence number of most recent SEDP message */ seqno_t seq; /* sequence number of most recent SEDP message */
}; };
@ -401,15 +401,15 @@ extern const ddsrt_avl_treedef_t deleted_participants_treedef;
struct deleted_participants_admin; struct deleted_participants_admin;
struct deleted_participants_admin *deleted_participants_admin_new (int64_t delay); struct deleted_participants_admin *deleted_participants_admin_new (int64_t delay);
void deleted_participants_admin_free (struct deleted_participants_admin *admin); void deleted_participants_admin_free (struct deleted_participants_admin *admin);
int is_deleted_participant_guid (struct deleted_participants_admin *admin, const struct nn_guid *guid, unsigned for_what); int is_deleted_participant_guid (struct deleted_participants_admin *admin, const struct ddsi_guid *guid, unsigned for_what);
nn_entityid_t to_entityid (unsigned u); ddsi_entityid_t to_entityid (unsigned u);
int is_builtin_entityid (nn_entityid_t id, nn_vendorid_t vendorid); int is_builtin_entityid (ddsi_entityid_t id, nn_vendorid_t vendorid);
int is_builtin_endpoint (nn_entityid_t id, nn_vendorid_t vendorid); int is_builtin_endpoint (ddsi_entityid_t id, nn_vendorid_t vendorid);
bool is_local_orphan_endpoint (const struct entity_common *e); bool is_local_orphan_endpoint (const struct entity_common *e);
int is_writer_entityid (nn_entityid_t id); int is_writer_entityid (ddsi_entityid_t id);
int is_reader_entityid (nn_entityid_t id); int is_reader_entityid (ddsi_entityid_t id);
int is_keyed_endpoint_entityid (nn_entityid_t id); int is_keyed_endpoint_entityid (ddsi_entityid_t id);
nn_vendorid_t get_entity_vendorid (const struct entity_common *e); nn_vendorid_t get_entity_vendorid (const struct entity_common *e);
/* Interface for glue code between the OpenSplice kernel and the DDSI /* Interface for glue code between the OpenSplice kernel and the DDSI
@ -490,7 +490,7 @@ nn_vendorid_t get_entity_vendorid (const struct entity_common *e);
* @retval DDS_RETCODE_OUT_OF_RESOURCES * @retval DDS_RETCODE_OUT_OF_RESOURCES
* The configured maximum number of participants has been reached. * The configured maximum number of participants has been reached.
*/ */
dds_return_t new_participant_guid (const nn_guid_t *ppguid, struct q_globals *gv, unsigned flags, const struct nn_plist *plist); dds_return_t new_participant_guid (const ddsi_guid_t *ppguid, struct q_globals *gv, unsigned flags, const struct nn_plist *plist);
/** /**
* @brief Create a new participant in the domain. See also new_participant_guid. * @brief Create a new participant in the domain. See also new_participant_guid.
@ -514,7 +514,7 @@ dds_return_t new_participant_guid (const nn_guid_t *ppguid, struct q_globals *gv
* @retval DDS_RETCODE_OUT_OF_RESOURCES * @retval DDS_RETCODE_OUT_OF_RESOURCES
* The configured maximum number of participants has been reached. * The configured maximum number of participants has been reached.
*/ */
dds_return_t new_participant (struct nn_guid *ppguid, struct q_globals *gv, unsigned flags, const struct nn_plist *plist); dds_return_t new_participant (struct ddsi_guid *ppguid, struct q_globals *gv, unsigned flags, const struct nn_plist *plist);
/** /**
* @brief Initiate the deletion of the participant: * @brief Initiate the deletion of the participant:
@ -540,9 +540,9 @@ dds_return_t new_participant (struct nn_guid *ppguid, struct q_globals *gv, unsi
* @retval DDS_RETCODE_BAD_PARAMETER * @retval DDS_RETCODE_BAD_PARAMETER
* ppguid lookup failed. * ppguid lookup failed.
*/ */
dds_return_t delete_participant (struct q_globals *gv, const struct nn_guid *ppguid); dds_return_t delete_participant (struct q_globals *gv, const struct ddsi_guid *ppguid);
void update_participant_plist (struct participant *pp, const struct nn_plist *plist); void update_participant_plist (struct participant *pp, const struct nn_plist *plist);
uint64_t get_entity_instance_id (const struct q_globals *gv, const struct nn_guid *guid); uint64_t get_entity_instance_id (const struct q_globals *gv, const struct ddsi_guid *guid);
/* To obtain the builtin writer to be used for publishing SPDP, SEDP, /* To obtain the builtin writer to be used for publishing SPDP, SEDP,
PMD stuff for PP and its endpoints, given the entityid. If PP has PMD stuff for PP and its endpoints, given the entityid. If PP has
@ -553,9 +553,9 @@ struct writer *get_builtin_writer (const struct participant *pp, unsigned entity
GUID "ppguid". May return NULL if participant unknown or GUID "ppguid". May return NULL if participant unknown or
writer/reader already known. */ writer/reader already known. */
dds_return_t new_writer (struct writer **wr_out, struct q_globals *gv, struct nn_guid *wrguid, const struct nn_guid *group_guid, const struct nn_guid *ppguid, const struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct whc * whc, status_cb_t status_cb, void *status_cb_arg); dds_return_t new_writer (struct writer **wr_out, struct q_globals *gv, struct ddsi_guid *wrguid, const struct ddsi_guid *group_guid, const struct ddsi_guid *ppguid, const struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct whc * whc, status_cb_t status_cb, void *status_cb_arg);
dds_return_t new_reader (struct reader **rd_out, struct q_globals *gv, struct nn_guid *rdguid, const struct nn_guid *group_guid, const struct nn_guid *ppguid, const struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct rhc * rhc, status_cb_t status_cb, void *status_cb_arg); dds_return_t new_reader (struct reader **rd_out, struct q_globals *gv, struct ddsi_guid *rdguid, const struct ddsi_guid *group_guid, const struct ddsi_guid *ppguid, const struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct ddsi_rhc * rhc, status_cb_t status_cb, void *status_cb_arg);
void update_reader_qos (struct reader *rd, const struct dds_qos *xqos); void update_reader_qos (struct reader *rd, const struct dds_qos *xqos);
void update_writer_qos (struct writer *wr, const struct dds_qos *xqos); void update_writer_qos (struct writer *wr, const struct dds_qos *xqos);
@ -568,16 +568,16 @@ int writer_must_have_hb_scheduled (const struct writer *wr, const struct whc_sta
void writer_set_retransmitting (struct writer *wr); void writer_set_retransmitting (struct writer *wr);
void writer_clear_retransmitting (struct writer *wr); void writer_clear_retransmitting (struct writer *wr);
dds_return_t delete_writer (struct q_globals *gv, const struct nn_guid *guid); dds_return_t delete_writer (struct q_globals *gv, const struct ddsi_guid *guid);
dds_return_t delete_writer_nolinger (struct q_globals *gv, const struct nn_guid *guid); dds_return_t delete_writer_nolinger (struct q_globals *gv, const struct ddsi_guid *guid);
dds_return_t delete_writer_nolinger_locked (struct writer *wr); dds_return_t delete_writer_nolinger_locked (struct writer *wr);
dds_return_t delete_reader (struct q_globals *gv, const struct nn_guid *guid); dds_return_t delete_reader (struct q_globals *gv, const struct ddsi_guid *guid);
struct local_orphan_writer { struct local_orphan_writer {
struct writer wr; struct writer wr;
}; };
struct local_orphan_writer *new_local_orphan_writer (struct q_globals *gv, nn_entityid_t entityid, struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct whc *whc); struct local_orphan_writer *new_local_orphan_writer (struct q_globals *gv, ddsi_entityid_t entityid, struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct whc *whc);
void delete_local_orphan_writer (struct local_orphan_writer *wr); void delete_local_orphan_writer (struct local_orphan_writer *wr);
/* To create or delete a new proxy participant: "guid" MUST have the /* To create or delete a new proxy participant: "guid" MUST have the
@ -604,8 +604,8 @@ void delete_local_orphan_writer (struct local_orphan_writer *wr);
/* Set when this proxy participant is not to be announced on the built-in topics yet */ /* Set when this proxy participant is not to be announced on the built-in topics yet */
#define CF_PROXYPP_NO_SPDP (1 << 3) #define CF_PROXYPP_NO_SPDP (1 << 3)
void new_proxy_participant (struct q_globals *gv, const struct nn_guid *guid, unsigned bes, unsigned prismtech_bes, const struct nn_guid *privileged_pp_guid, struct addrset *as_default, struct addrset *as_meta, const struct nn_plist *plist, dds_duration_t tlease_dur, nn_vendorid_t vendor, unsigned custom_flags, nn_wctime_t timestamp, seqno_t seq); void new_proxy_participant (struct q_globals *gv, const struct ddsi_guid *guid, unsigned bes, unsigned prismtech_bes, const struct ddsi_guid *privileged_pp_guid, struct addrset *as_default, struct addrset *as_meta, const struct nn_plist *plist, dds_duration_t tlease_dur, nn_vendorid_t vendor, unsigned custom_flags, nn_wctime_t timestamp, seqno_t seq);
int delete_proxy_participant_by_guid (struct q_globals *gv, const struct nn_guid *guid, nn_wctime_t timestamp, int isimplicit); int delete_proxy_participant_by_guid (struct q_globals *gv, const struct ddsi_guid *guid, nn_wctime_t timestamp, int isimplicit);
enum update_proxy_participant_source { enum update_proxy_participant_source {
UPD_PROXYPP_SPDP, UPD_PROXYPP_SPDP,
@ -620,8 +620,8 @@ void purge_proxy_participants (struct q_globals *gv, const nn_locator_t *loc, bo
/* To create a new proxy writer or reader; the proxy participant is /* To create a new proxy writer or reader; the proxy participant is
determined from the GUID and must exist. */ determined from the GUID and must exist. */
int new_proxy_writer (struct q_globals *gv, const struct nn_guid *ppguid, const struct nn_guid *guid, struct addrset *as, const struct nn_plist *plist, struct nn_dqueue *dqueue, struct xeventq *evq, nn_wctime_t timestamp, seqno_t seq); int new_proxy_writer (struct q_globals *gv, const struct ddsi_guid *ppguid, const struct ddsi_guid *guid, struct addrset *as, const struct nn_plist *plist, struct nn_dqueue *dqueue, struct xeventq *evq, nn_wctime_t timestamp, seqno_t seq);
int new_proxy_reader (struct q_globals *gv, const struct nn_guid *ppguid, const struct nn_guid *guid, struct addrset *as, const struct nn_plist *plist, nn_wctime_t timestamp, seqno_t seq int new_proxy_reader (struct q_globals *gv, const struct ddsi_guid *ppguid, const struct ddsi_guid *guid, struct addrset *as, const struct nn_plist *plist, nn_wctime_t timestamp, seqno_t seq
#ifdef DDSI_INCLUDE_SSM #ifdef DDSI_INCLUDE_SSM
, int favours_ssm , int favours_ssm
#endif #endif
@ -632,22 +632,24 @@ int new_proxy_reader (struct q_globals *gv, const struct nn_guid *ppguid, const
reader or writer. Actual deletion is scheduled in the future, when reader or writer. Actual deletion is scheduled in the future, when
no outstanding references may still exist (determined by checking no outstanding references may still exist (determined by checking
thread progress, &c.). */ thread progress, &c.). */
int delete_proxy_writer (struct q_globals *gv, const struct nn_guid *guid, nn_wctime_t timestamp, int isimplicit); int delete_proxy_writer (struct q_globals *gv, const struct ddsi_guid *guid, nn_wctime_t timestamp, int isimplicit);
int delete_proxy_reader (struct q_globals *gv, const struct nn_guid *guid, nn_wctime_t timestamp, int isimplicit); int delete_proxy_reader (struct q_globals *gv, const struct ddsi_guid *guid, nn_wctime_t timestamp, int isimplicit);
void update_proxy_reader (struct proxy_reader *prd, seqno_t seq, struct addrset *as, const struct dds_qos *xqos, nn_wctime_t timestamp); void update_proxy_reader (struct proxy_reader *prd, seqno_t seq, struct addrset *as, const struct dds_qos *xqos, nn_wctime_t timestamp);
void update_proxy_writer (struct proxy_writer *pwr, seqno_t seq, struct addrset *as, const struct dds_qos *xqos, nn_wctime_t timestamp); void update_proxy_writer (struct proxy_writer *pwr, seqno_t seq, struct addrset *as, const struct dds_qos *xqos, nn_wctime_t timestamp);
int new_proxy_group (const struct nn_guid *guid, const char *name, const struct dds_qos *xqos, nn_wctime_t timestamp); int new_proxy_group (const struct ddsi_guid *guid, const char *name, const struct dds_qos *xqos, nn_wctime_t timestamp);
void delete_proxy_group (struct ephash *guid_hash, const struct nn_guid *guid, nn_wctime_t timestamp, int isimplicit); void delete_proxy_group (struct ephash *guid_hash, const struct ddsi_guid *guid, nn_wctime_t timestamp, int isimplicit);
/* Call this to empty all address sets of all writers to stop all outgoing traffic, or to /* Call this to empty all address sets of all writers to stop all outgoing traffic, or to
rebuild them all (which only makes sense after previously having emptied them all). */ rebuild them all (which only makes sense after previously having emptied them all). */
void rebuild_or_clear_writer_addrsets(struct q_globals *gv, int rebuild); void rebuild_or_clear_writer_addrsets(struct q_globals *gv, int rebuild);
void local_reader_ary_setfastpath_ok (struct local_reader_ary *x, bool fastpath_ok); void local_reader_ary_setfastpath_ok (struct local_reader_ary *x, bool fastpath_ok);
struct ddsi_writer_info;
DDS_EXPORT void ddsi_make_writer_info(struct ddsi_writer_info *wrinfo, const struct entity_common *e, const struct dds_qos *xqos);
#if defined (__cplusplus) #if defined (__cplusplus)
} }
#endif #endif

View file

@ -25,7 +25,7 @@ struct writer;
struct proxy_participant; struct proxy_participant;
struct proxy_reader; struct proxy_reader;
struct proxy_writer; struct proxy_writer;
struct nn_guid; struct ddsi_guid;
enum entity_kind { enum entity_kind {
EK_PARTICIPANT, EK_PARTICIPANT,
@ -80,15 +80,15 @@ void ephash_remove_reader_guid (struct ephash *eh, struct reader *rd);
void ephash_remove_proxy_writer_guid (struct ephash *eh, struct proxy_writer *pwr); void ephash_remove_proxy_writer_guid (struct ephash *eh, struct proxy_writer *pwr);
void ephash_remove_proxy_reader_guid (struct ephash *eh, struct proxy_reader *prd); void ephash_remove_proxy_reader_guid (struct ephash *eh, struct proxy_reader *prd);
void *ephash_lookup_guid_untyped (const struct ephash *eh, const struct nn_guid *guid); void *ephash_lookup_guid_untyped (const struct ephash *eh, const struct ddsi_guid *guid);
void *ephash_lookup_guid (const struct ephash *eh, const struct nn_guid *guid, enum entity_kind kind); void *ephash_lookup_guid (const struct ephash *eh, const struct ddsi_guid *guid, enum entity_kind kind);
struct participant *ephash_lookup_participant_guid (const struct ephash *eh, const struct nn_guid *guid); struct participant *ephash_lookup_participant_guid (const struct ephash *eh, const struct ddsi_guid *guid);
struct proxy_participant *ephash_lookup_proxy_participant_guid (const struct ephash *eh, const struct nn_guid *guid); struct proxy_participant *ephash_lookup_proxy_participant_guid (const struct ephash *eh, const struct ddsi_guid *guid);
struct writer *ephash_lookup_writer_guid (const struct ephash *eh, const struct nn_guid *guid); struct writer *ephash_lookup_writer_guid (const struct ephash *eh, const struct ddsi_guid *guid);
struct reader *ephash_lookup_reader_guid (const struct ephash *eh, const struct nn_guid *guid); struct reader *ephash_lookup_reader_guid (const struct ephash *eh, const struct ddsi_guid *guid);
struct proxy_writer *ephash_lookup_proxy_writer_guid (const struct ephash *eh, const struct nn_guid *guid); struct proxy_writer *ephash_lookup_proxy_writer_guid (const struct ephash *eh, const struct ddsi_guid *guid);
struct proxy_reader *ephash_lookup_proxy_reader_guid (const struct ephash *eh, const struct nn_guid *guid); struct proxy_reader *ephash_lookup_proxy_reader_guid (const struct ephash *eh, const struct ddsi_guid *guid);
/* Enumeration of entries in the hash table: /* Enumeration of entries in the hash table:

View file

@ -158,7 +158,7 @@ struct q_globals {
/* GUID to be used in next call to new_participant; also protected /* GUID to be used in next call to new_participant; also protected
by privileged_pp_lock */ by privileged_pp_lock */
struct nn_guid ppguid_base; struct ddsi_guid ppguid_base;
/* number of up, non-loopback, IPv4/IPv6 interfaces, the index of /* number of up, non-loopback, IPv4/IPv6 interfaces, the index of
the selected/preferred one, and the discovered interfaces. */ the selected/preferred one, and the discovered interfaces. */

View file

@ -116,7 +116,7 @@ typedef struct nn_prismtech_participant_version_info
} nn_prismtech_participant_version_info_t; } nn_prismtech_participant_version_info_t;
typedef struct nn_prismtech_eotgroup_tid { typedef struct nn_prismtech_eotgroup_tid {
nn_entityid_t writer_entityid; ddsi_entityid_t writer_entityid;
uint32_t transactionId; uint32_t transactionId;
} nn_prismtech_eotgroup_tid_t; } nn_prismtech_eotgroup_tid_t;
@ -140,9 +140,9 @@ typedef struct nn_plist {
uint32_t participant_builtin_endpoints; uint32_t participant_builtin_endpoints;
dds_duration_t participant_lease_duration; dds_duration_t participant_lease_duration;
/* nn_content_filter_property_t content_filter_property; */ /* nn_content_filter_property_t content_filter_property; */
nn_guid_t participant_guid; ddsi_guid_t participant_guid;
nn_guid_t endpoint_guid; ddsi_guid_t endpoint_guid;
nn_guid_t group_guid; ddsi_guid_t group_guid;
#if 0 /* reserved, rather than NIY */ #if 0 /* reserved, rather than NIY */
nn_entityid_t participant_entityid; nn_entityid_t participant_entityid;
nn_entityid_t group_entityid; nn_entityid_t group_entityid;

View file

@ -116,7 +116,7 @@ typedef struct Header {
nn_protocolid_t protocol; nn_protocolid_t protocol;
nn_protocol_version_t version; nn_protocol_version_t version;
nn_vendorid_t vendorid; nn_vendorid_t vendorid;
nn_guid_prefix_t guid_prefix; ddsi_guid_prefix_t guid_prefix;
} Header_t; } Header_t;
#if DDSRT_ENDIAN == DDSRT_LITTLE_ENDIAN #if DDSRT_ENDIAN == DDSRT_LITTLE_ENDIAN
#define NN_PROTOCOLID_AS_UINT32 (((uint32_t)'R' << 0) | ((uint32_t)'T' << 8) | ((uint32_t)'P' << 16) | ((uint32_t)'S' << 24)) #define NN_PROTOCOLID_AS_UINT32 (((uint32_t)'R' << 0) | ((uint32_t)'T' << 8) | ((uint32_t)'P' << 16) | ((uint32_t)'S' << 24))
@ -162,12 +162,12 @@ typedef struct InfoTimestamp {
typedef struct EntityId { typedef struct EntityId {
SubmessageHeader_t smhdr; SubmessageHeader_t smhdr;
nn_entityid_t entityid; ddsi_entityid_t entityid;
} EntityId_t; } EntityId_t;
typedef struct InfoDST { typedef struct InfoDST {
SubmessageHeader_t smhdr; SubmessageHeader_t smhdr;
nn_guid_prefix_t guid_prefix; ddsi_guid_prefix_t guid_prefix;
} InfoDST_t; } InfoDST_t;
typedef struct InfoSRC { typedef struct InfoSRC {
@ -175,7 +175,7 @@ typedef struct InfoSRC {
unsigned unused; unsigned unused;
nn_protocol_version_t version; nn_protocol_version_t version;
nn_vendorid_t vendorid; nn_vendorid_t vendorid;
nn_guid_prefix_t guid_prefix; ddsi_guid_prefix_t guid_prefix;
} InfoSRC_t; } InfoSRC_t;
#if DDSRT_ENDIAN == DDSRT_LITTLE_ENDIAN #if DDSRT_ENDIAN == DDSRT_LITTLE_ENDIAN
@ -197,8 +197,8 @@ typedef struct Data_DataFrag_common {
SubmessageHeader_t smhdr; SubmessageHeader_t smhdr;
uint16_t extraFlags; uint16_t extraFlags;
uint16_t octetsToInlineQos; uint16_t octetsToInlineQos;
nn_entityid_t readerId; ddsi_entityid_t readerId;
nn_entityid_t writerId; ddsi_entityid_t writerId;
nn_sequence_number_t writerSN; nn_sequence_number_t writerSN;
} Data_DataFrag_common_t; } Data_DataFrag_common_t;
@ -227,8 +227,8 @@ typedef struct MsgLen {
DDSRT_WARNING_MSVC_OFF(4200) DDSRT_WARNING_MSVC_OFF(4200)
typedef struct AckNack { typedef struct AckNack {
SubmessageHeader_t smhdr; SubmessageHeader_t smhdr;
nn_entityid_t readerId; ddsi_entityid_t readerId;
nn_entityid_t writerId; ddsi_entityid_t writerId;
nn_sequence_number_set_header_t readerSNState; nn_sequence_number_set_header_t readerSNState;
uint32_t bits[]; uint32_t bits[];
/* nn_count_t count; */ /* nn_count_t count; */
@ -241,8 +241,8 @@ DDSRT_WARNING_MSVC_ON(4200)
DDSRT_WARNING_MSVC_OFF(4200) DDSRT_WARNING_MSVC_OFF(4200)
typedef struct Gap { typedef struct Gap {
SubmessageHeader_t smhdr; SubmessageHeader_t smhdr;
nn_entityid_t readerId; ddsi_entityid_t readerId;
nn_entityid_t writerId; ddsi_entityid_t writerId;
nn_sequence_number_t gapStart; nn_sequence_number_t gapStart;
nn_sequence_number_set_header_t gapList; nn_sequence_number_set_header_t gapList;
uint32_t bits[]; uint32_t bits[];
@ -259,8 +259,8 @@ typedef struct InfoTS {
typedef struct Heartbeat { typedef struct Heartbeat {
SubmessageHeader_t smhdr; SubmessageHeader_t smhdr;
nn_entityid_t readerId; ddsi_entityid_t readerId;
nn_entityid_t writerId; ddsi_entityid_t writerId;
nn_sequence_number_t firstSN; nn_sequence_number_t firstSN;
nn_sequence_number_t lastSN; nn_sequence_number_t lastSN;
nn_count_t count; nn_count_t count;
@ -270,8 +270,8 @@ typedef struct Heartbeat {
typedef struct HeartbeatFrag { typedef struct HeartbeatFrag {
SubmessageHeader_t smhdr; SubmessageHeader_t smhdr;
nn_entityid_t readerId; ddsi_entityid_t readerId;
nn_entityid_t writerId; ddsi_entityid_t writerId;
nn_sequence_number_t writerSN; nn_sequence_number_t writerSN;
nn_fragment_number_t lastFragmentNum; nn_fragment_number_t lastFragmentNum;
nn_count_t count; nn_count_t count;
@ -280,8 +280,8 @@ typedef struct HeartbeatFrag {
DDSRT_WARNING_MSVC_OFF(4200) DDSRT_WARNING_MSVC_OFF(4200)
typedef struct NackFrag { typedef struct NackFrag {
SubmessageHeader_t smhdr; SubmessageHeader_t smhdr;
nn_entityid_t readerId; ddsi_entityid_t readerId;
nn_entityid_t writerId; ddsi_entityid_t writerId;
nn_sequence_number_t writerSN; nn_sequence_number_t writerSN;
nn_fragment_number_set_header_t fragmentNumberState; nn_fragment_number_set_header_t fragmentNumberState;
uint32_t bits[]; uint32_t bits[];
@ -314,7 +314,7 @@ typedef union Submessage {
DDSRT_WARNING_MSVC_OFF(4200) DDSRT_WARNING_MSVC_OFF(4200)
typedef struct ParticipantMessageData { typedef struct ParticipantMessageData {
nn_guid_prefix_t participantGuidPrefix; ddsi_guid_prefix_t participantGuidPrefix;
uint32_t kind; /* really 4 octets */ uint32_t kind; /* really 4 octets */
uint32_t length; uint32_t length;
char value[]; char value[];

View file

@ -30,14 +30,14 @@ struct nn_rsample_info;
struct nn_defrag; struct nn_defrag;
struct nn_reorder; struct nn_reorder;
struct nn_dqueue; struct nn_dqueue;
struct nn_guid; struct ddsi_guid;
struct proxy_writer; struct proxy_writer;
struct nn_fragment_number_set; struct nn_fragment_number_set;
struct nn_sequence_number_set; struct nn_sequence_number_set;
typedef int (*nn_dqueue_handler_t) (const struct nn_rsample_info *sampleinfo, const struct nn_rdata *fragchain, const struct nn_guid *rdguid, void *qarg); typedef int (*nn_dqueue_handler_t) (const struct nn_rsample_info *sampleinfo, const struct nn_rdata *fragchain, const struct ddsi_guid *rdguid, void *qarg);
struct nn_rmsg_chunk { struct nn_rmsg_chunk {
struct nn_rbuf *rbuf; struct nn_rbuf *rbuf;
@ -102,8 +102,8 @@ struct nn_rmsg {
#define NN_RMSG_PAYLOADOFF(m, o) (NN_RMSG_PAYLOAD (m) + (o)) #define NN_RMSG_PAYLOADOFF(m, o) (NN_RMSG_PAYLOAD (m) + (o))
struct receiver_state { struct receiver_state {
nn_guid_prefix_t src_guid_prefix; /* 12 */ ddsi_guid_prefix_t src_guid_prefix; /* 12 */
nn_guid_prefix_t dst_guid_prefix; /* 12 */ ddsi_guid_prefix_t dst_guid_prefix; /* 12 */
struct addrset *reply_locators; /* 4/8 */ struct addrset *reply_locators; /* 4/8 */
int forme; /* 4 */ int forme; /* 4 */
nn_vendorid_t vendor; /* 2 */ nn_vendorid_t vendor; /* 2 */
@ -234,7 +234,7 @@ void nn_dqueue_free (struct nn_dqueue *q);
bool nn_dqueue_enqueue_deferred_wakeup (struct nn_dqueue *q, struct nn_rsample_chain *sc, nn_reorder_result_t rres); bool nn_dqueue_enqueue_deferred_wakeup (struct nn_dqueue *q, struct nn_rsample_chain *sc, nn_reorder_result_t rres);
void dd_dqueue_enqueue_trigger (struct nn_dqueue *q); void dd_dqueue_enqueue_trigger (struct nn_dqueue *q);
void nn_dqueue_enqueue (struct nn_dqueue *q, struct nn_rsample_chain *sc, nn_reorder_result_t rres); void nn_dqueue_enqueue (struct nn_dqueue *q, struct nn_rsample_chain *sc, nn_reorder_result_t rres);
void nn_dqueue_enqueue1 (struct nn_dqueue *q, const nn_guid_t *rdguid, struct nn_rsample_chain *sc, nn_reorder_result_t rres); void nn_dqueue_enqueue1 (struct nn_dqueue *q, const ddsi_guid_t *rdguid, struct nn_rsample_chain *sc, nn_reorder_result_t rres);
void nn_dqueue_enqueue_callback (struct nn_dqueue *q, nn_dqueue_callback_t cb, void *arg); void nn_dqueue_enqueue_callback (struct nn_dqueue *q, nn_dqueue_callback_t cb, void *arg);
int nn_dqueue_is_full (struct nn_dqueue *q); int nn_dqueue_is_full (struct nn_dqueue *q);
void nn_dqueue_wait_until_empty_if_full (struct nn_dqueue *q); void nn_dqueue_wait_until_empty_if_full (struct nn_dqueue *q);

View file

@ -25,7 +25,7 @@ struct recv_thread_arg;
void trigger_recv_threads (const struct q_globals *gv); void trigger_recv_threads (const struct q_globals *gv);
uint32_t recv_thread (void *vrecv_thread_arg); uint32_t recv_thread (void *vrecv_thread_arg);
uint32_t listen_thread (struct ddsi_tran_listener * listener); uint32_t listen_thread (struct ddsi_tran_listener * listener);
int user_dqueue_handler (const struct nn_rsample_info *sampleinfo, const struct nn_rdata *fragchain, const nn_guid_t *rdguid, void *qarg); int user_dqueue_handler (const struct nn_rsample_info *sampleinfo, const struct nn_rdata *fragchain, const ddsi_guid_t *rdguid, void *qarg);
#if defined (__cplusplus) #if defined (__cplusplus)
} }

View file

@ -1,86 +0,0 @@
/*
* 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 Q_RHC_H
#define Q_RHC_H
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
#include "dds/export.h"
/* DDS_EXPORT inline i.c.w. __attributes__((visibility...)) and some compilers: */
#include "dds/ddsrt/attributes.h"
#include "dds/ddsi/q_rtps.h"
#if defined (__cplusplus)
extern "C" {
#endif
struct dds_qos;
struct ddsi_tkmap_instance;
struct ddsi_serdata;
struct ddsi_sertopic;
struct entity_common;
struct proxy_writer_info
{
nn_guid_t guid;
bool auto_dispose;
int32_t ownership_strength;
uint64_t iid;
};
struct rhc;
typedef void (*rhc_free_t) (struct rhc *rhc);
typedef bool (*rhc_store_t) (struct rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk);
typedef void (*rhc_unregister_wr_t) (struct rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info);
typedef void (*rhc_relinquish_ownership_t) (struct rhc * __restrict rhc, const uint64_t wr_iid);
typedef void (*rhc_set_qos_t) (struct rhc *rhc, const struct dds_qos *qos);
struct rhc_ops {
rhc_store_t store;
rhc_unregister_wr_t unregister_wr;
rhc_relinquish_ownership_t relinquish_ownership;
rhc_set_qos_t set_qos;
rhc_free_t free;
};
struct rhc {
const struct rhc_ops *ops;
};
DDS_EXPORT inline bool rhc_store (struct rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk) {
return rhc->ops->store (rhc, pwr_info, sample, tk);
}
DDS_EXPORT inline void rhc_unregister_wr (struct rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info) {
rhc->ops->unregister_wr (rhc, pwr_info);
}
DDS_EXPORT inline void rhc_relinquish_ownership (struct rhc * __restrict rhc, const uint64_t wr_iid) {
rhc->ops->relinquish_ownership (rhc, wr_iid);
}
DDS_EXPORT inline void rhc_set_qos (struct rhc *rhc, const struct dds_qos *qos) {
rhc->ops->set_qos (rhc, qos);
}
DDS_EXPORT inline void rhc_free (struct rhc *rhc) {
rhc->ops->free (rhc);
}
DDS_EXPORT void make_proxy_writer_info(struct proxy_writer_info *pwr_info, const struct entity_common *e, const struct dds_qos *xqos);
#if defined (__cplusplus)
}
#endif
#endif /* Q_RHC_H */

View file

@ -13,6 +13,7 @@
#define NN_RTPS_H #define NN_RTPS_H
#include "dds/ddsi/ddsi_vendor.h" #include "dds/ddsi/ddsi_vendor.h"
#include "dds/ddsi/ddsi_guid.h"
#if defined (__cplusplus) #if defined (__cplusplus)
extern "C" { extern "C" {
@ -21,17 +22,6 @@ extern "C" {
typedef struct { typedef struct {
uint8_t major, minor; uint8_t major, minor;
} nn_protocol_version_t; } nn_protocol_version_t;
typedef union nn_guid_prefix {
unsigned char s[12];
uint32_t u[3];
} nn_guid_prefix_t;
typedef union nn_entityid {
uint32_t u;
} nn_entityid_t;
typedef struct nn_guid {
nn_guid_prefix_t prefix;
nn_entityid_t entityid;
} nn_guid_t;
typedef int64_t seqno_t; typedef int64_t seqno_t;
#define MAX_SEQ_NUMBER INT64_MAX #define MAX_SEQ_NUMBER INT64_MAX

View file

@ -42,7 +42,7 @@ int write_sample_nogc_notk (struct thread_state1 * const ts1, struct nn_xpack *x
/* When calling the following functions, wr->lock must be held */ /* When calling the following functions, wr->lock must be held */
dds_return_t create_fragment_message (struct writer *wr, seqno_t seq, const struct nn_plist *plist, struct ddsi_serdata *serdata, unsigned fragnum, struct proxy_reader *prd,struct nn_xmsg **msg, int isnew); dds_return_t create_fragment_message (struct writer *wr, seqno_t seq, const struct nn_plist *plist, struct ddsi_serdata *serdata, unsigned fragnum, struct proxy_reader *prd,struct nn_xmsg **msg, int isnew);
int enqueue_sample_wrlock_held (struct writer *wr, seqno_t seq, const struct nn_plist *plist, struct ddsi_serdata *serdata, struct proxy_reader *prd, int isnew); int enqueue_sample_wrlock_held (struct writer *wr, seqno_t seq, const struct nn_plist *plist, struct ddsi_serdata *serdata, struct proxy_reader *prd, int isnew);
void add_Heartbeat (struct nn_xmsg *msg, struct writer *wr, const struct whc_state *whcst, int hbansreq, nn_entityid_t dst, int issync); void add_Heartbeat (struct nn_xmsg *msg, struct writer *wr, const struct whc_state *whcst, int hbansreq, ddsi_entityid_t dst, int issync);
#if defined (__cplusplus) #if defined (__cplusplus)
} }

View file

@ -46,8 +46,8 @@ DDS_EXPORT dds_return_t xeventq_start (struct xeventq *evq, const char *name); /
DDS_EXPORT void xeventq_stop (struct xeventq *evq); DDS_EXPORT void xeventq_stop (struct xeventq *evq);
DDS_EXPORT void qxev_msg (struct xeventq *evq, struct nn_xmsg *msg); DDS_EXPORT void qxev_msg (struct xeventq *evq, struct nn_xmsg *msg);
DDS_EXPORT void qxev_pwr_entityid (struct proxy_writer * pwr, nn_guid_prefix_t * id); DDS_EXPORT void qxev_pwr_entityid (struct proxy_writer * pwr, ddsi_guid_prefix_t * id);
DDS_EXPORT void qxev_prd_entityid (struct proxy_reader * prd, nn_guid_prefix_t * id); DDS_EXPORT void qxev_prd_entityid (struct proxy_reader * prd, ddsi_guid_prefix_t * id);
/* Returns 1 if queued, 0 otherwise (no point in returning the /* Returns 1 if queued, 0 otherwise (no point in returning the
event, you can't do anything with it anyway) */ event, you can't do anything with it anyway) */
@ -57,11 +57,11 @@ DDS_EXPORT int qxev_msg_rexmit_wrlock_held (struct xeventq *evq, struct nn_xmsg
DDS_EXPORT void delete_xevent (struct xevent *ev); DDS_EXPORT void delete_xevent (struct xevent *ev);
DDS_EXPORT int resched_xevent_if_earlier (struct xevent *ev, nn_mtime_t tsched); DDS_EXPORT int resched_xevent_if_earlier (struct xevent *ev, nn_mtime_t tsched);
DDS_EXPORT struct xevent *qxev_heartbeat (struct xeventq *evq, nn_mtime_t tsched, const nn_guid_t *wr_guid); DDS_EXPORT struct xevent *qxev_heartbeat (struct xeventq *evq, nn_mtime_t tsched, const ddsi_guid_t *wr_guid);
DDS_EXPORT struct xevent *qxev_acknack (struct xeventq *evq, nn_mtime_t tsched, const nn_guid_t *pwr_guid, const nn_guid_t *rd_guid); DDS_EXPORT struct xevent *qxev_acknack (struct xeventq *evq, nn_mtime_t tsched, const ddsi_guid_t *pwr_guid, const ddsi_guid_t *rd_guid);
DDS_EXPORT struct xevent *qxev_spdp (struct xeventq *evq, nn_mtime_t tsched, const nn_guid_t *pp_guid, const nn_guid_t *proxypp_guid); DDS_EXPORT struct xevent *qxev_spdp (struct xeventq *evq, nn_mtime_t tsched, const ddsi_guid_t *pp_guid, const ddsi_guid_t *proxypp_guid);
DDS_EXPORT struct xevent *qxev_pmd_update (struct xeventq *evq, nn_mtime_t tsched, const nn_guid_t *pp_guid); DDS_EXPORT struct xevent *qxev_pmd_update (struct xeventq *evq, nn_mtime_t tsched, const ddsi_guid_t *pp_guid);
DDS_EXPORT struct xevent *qxev_delete_writer (struct xeventq *evq, nn_mtime_t tsched, const nn_guid_t *guid); DDS_EXPORT struct xevent *qxev_delete_writer (struct xeventq *evq, nn_mtime_t tsched, const ddsi_guid_t *guid);
/* cb will be called with now = T_NEVER if the event is still enqueued when when xeventq_free starts cleaning up */ /* cb will be called with now = T_NEVER if the event is still enqueued when when xeventq_free starts cleaning up */
DDS_EXPORT struct xevent *qxev_callback (struct xeventq *evq, nn_mtime_t tsched, void (*cb) (struct xevent *xev, void *arg, nn_mtime_t now), void *arg); DDS_EXPORT struct xevent *qxev_callback (struct xeventq *evq, nn_mtime_t tsched, void (*cb) (struct xevent *xev, void *arg, nn_mtime_t now), void *arg);

View file

@ -54,10 +54,10 @@ void nn_xmsgpool_free (struct nn_xmsgpool *pool);
/* To allocate a new xmsg from the pool; if expected_size is NOT /* To allocate a new xmsg from the pool; if expected_size is NOT
exceeded, no reallocs will be performed, else the address of the exceeded, no reallocs will be performed, else the address of the
xmsg may change because of reallocing when appending to it. */ xmsg may change because of reallocing when appending to it. */
struct nn_xmsg *nn_xmsg_new (struct nn_xmsgpool *pool, const nn_guid_prefix_t *src_guid_prefix, size_t expected_size, enum nn_xmsg_kind kind); struct nn_xmsg *nn_xmsg_new (struct nn_xmsgpool *pool, const ddsi_guid_prefix_t *src_guid_prefix, size_t expected_size, enum nn_xmsg_kind kind);
/* For sending to a particular destination (participant) */ /* For sending to a particular destination (participant) */
void nn_xmsg_setdst1 (struct nn_xmsg *m, const nn_guid_prefix_t *gp, const nn_locator_t *addr); void nn_xmsg_setdst1 (struct nn_xmsg *m, const ddsi_guid_prefix_t *gp, const nn_locator_t *addr);
/* For sending to a particular proxy reader; this is a convenience /* For sending to a particular proxy reader; this is a convenience
routine that extracts a suitable address from the proxy reader's routine that extracts a suitable address from the proxy reader's
@ -80,7 +80,7 @@ int nn_xmsg_setencoderid (struct nn_xmsg *msg, uint32_t encoderid);
M must be a rexmit, and for all rexmits this must be called. It is M must be a rexmit, and for all rexmits this must be called. It is
a separate function because the location may only become known at a a separate function because the location may only become known at a
late-ish stage in the construction of the message. */ late-ish stage in the construction of the message. */
void nn_xmsg_set_data_readerId (struct nn_xmsg *m, nn_entityid_t *readerId); void nn_xmsg_set_data_readerId (struct nn_xmsg *m, ddsi_entityid_t *readerId);
/* If M and MADD are both xmsg's containing the same retransmit /* If M and MADD are both xmsg's containing the same retransmit
message, this will merge the destination embedded in MADD into M. message, this will merge the destination embedded in MADD into M.
@ -97,8 +97,8 @@ int nn_xmsg_merge_rexmit_destinations_wrlock_held (struct q_globals *gv, struct
/* To set writer ids for updating last transmitted sequence number; /* To set writer ids for updating last transmitted sequence number;
wrfragid is 0 based, unlike DDSI but like other places where wrfragid is 0 based, unlike DDSI but like other places where
fragment numbers are handled internally. */ fragment numbers are handled internally. */
void nn_xmsg_setwriterseq (struct nn_xmsg *msg, const nn_guid_t *wrguid, seqno_t wrseq); void nn_xmsg_setwriterseq (struct nn_xmsg *msg, const ddsi_guid_t *wrguid, seqno_t wrseq);
void nn_xmsg_setwriterseq_fragid (struct nn_xmsg *msg, const nn_guid_t *wrguid, seqno_t wrseq, nn_fragment_number_t wrfragid); void nn_xmsg_setwriterseq_fragid (struct nn_xmsg *msg, const ddsi_guid_t *wrguid, seqno_t wrseq, nn_fragment_number_t wrfragid);
/* Comparison function for retransmits: orders messages on writer /* Comparison function for retransmits: orders messages on writer
guid, sequence number and fragment id */ guid, sequence number and fragment id */
@ -109,7 +109,7 @@ size_t nn_xmsg_size (const struct nn_xmsg *m);
void *nn_xmsg_payload (size_t *sz, struct nn_xmsg *m); void *nn_xmsg_payload (size_t *sz, struct nn_xmsg *m);
void nn_xmsg_payload_to_plistsample (struct ddsi_plist_sample *dst, nn_parameterid_t keyparam, const struct nn_xmsg *m); void nn_xmsg_payload_to_plistsample (struct ddsi_plist_sample *dst, nn_parameterid_t keyparam, const struct nn_xmsg *m);
enum nn_xmsg_kind nn_xmsg_kind (const struct nn_xmsg *m); enum nn_xmsg_kind nn_xmsg_kind (const struct nn_xmsg *m);
void nn_xmsg_guid_seq_fragid (const struct nn_xmsg *m, nn_guid_t *wrguid, seqno_t *wrseq, nn_fragment_number_t *wrfragid); void nn_xmsg_guid_seq_fragid (const struct nn_xmsg *m, ddsi_guid_t *wrguid, seqno_t *wrseq, nn_fragment_number_t *wrfragid);
void *nn_xmsg_submsg_from_marker (struct nn_xmsg *msg, struct nn_xmsg_marker marker); void *nn_xmsg_submsg_from_marker (struct nn_xmsg *msg, struct nn_xmsg_marker marker);
void *nn_xmsg_append (struct nn_xmsg *m, struct nn_xmsg_marker *marker, size_t sz); void *nn_xmsg_append (struct nn_xmsg *m, struct nn_xmsg_marker *marker, size_t sz);

View file

@ -0,0 +1,18 @@
/*
* 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
*/
#include "dds/ddsi/ddsi_rhc.h"
extern inline void ddsi_rhc_free (struct ddsi_rhc *rhc);
extern inline bool ddsi_rhc_store (struct ddsi_rhc * __restrict rhc, const struct ddsi_writer_info * __restrict wrinfo, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk);
extern inline void ddsi_rhc_unregister_wr (struct ddsi_rhc * __restrict rhc, const struct ddsi_writer_info * __restrict wrinfo);
extern inline void ddsi_rhc_relinquish_ownership (struct ddsi_rhc * __restrict rhc, const uint64_t wr_iid);
extern inline void ddsi_rhc_set_qos (struct ddsi_rhc *rhc, const struct dds_qos *qos);

View file

@ -11,7 +11,7 @@
*/ */
#include "dds/ddsi/q_bswap.h" #include "dds/ddsi/q_bswap.h"
nn_guid_prefix_t nn_hton_guid_prefix (nn_guid_prefix_t p) ddsi_guid_prefix_t nn_hton_guid_prefix (ddsi_guid_prefix_t p)
{ {
int i; int i;
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
@ -19,7 +19,7 @@ nn_guid_prefix_t nn_hton_guid_prefix (nn_guid_prefix_t p)
return p; return p;
} }
nn_guid_prefix_t nn_ntoh_guid_prefix (nn_guid_prefix_t p) ddsi_guid_prefix_t nn_ntoh_guid_prefix (ddsi_guid_prefix_t p)
{ {
int i; int i;
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
@ -27,26 +27,26 @@ nn_guid_prefix_t nn_ntoh_guid_prefix (nn_guid_prefix_t p)
return p; return p;
} }
nn_entityid_t nn_hton_entityid (nn_entityid_t e) ddsi_entityid_t nn_hton_entityid (ddsi_entityid_t e)
{ {
e.u = toBE4u (e.u); e.u = toBE4u (e.u);
return e; return e;
} }
nn_entityid_t nn_ntoh_entityid (nn_entityid_t e) ddsi_entityid_t nn_ntoh_entityid (ddsi_entityid_t e)
{ {
e.u = fromBE4u (e.u); e.u = fromBE4u (e.u);
return e; return e;
} }
nn_guid_t nn_hton_guid (nn_guid_t g) ddsi_guid_t nn_hton_guid (ddsi_guid_t g)
{ {
g.prefix = nn_hton_guid_prefix (g.prefix); g.prefix = nn_hton_guid_prefix (g.prefix);
g.entityid = nn_hton_entityid (g.entityid); g.entityid = nn_hton_entityid (g.entityid);
return g; return g;
} }
nn_guid_t nn_ntoh_guid (nn_guid_t g) ddsi_guid_t nn_ntoh_guid (ddsi_guid_t g)
{ {
g.prefix = nn_ntoh_guid_prefix (g.prefix); g.prefix = nn_ntoh_guid_prefix (g.prefix);
g.entityid = nn_ntoh_entityid (g.entityid); g.entityid = nn_ntoh_entityid (g.entityid);

View file

@ -352,7 +352,7 @@ int spdp_dispose_unregister (struct participant *pp)
return ret; return ret;
} }
static unsigned pseudo_random_delay (const nn_guid_t *x, const nn_guid_t *y, nn_mtime_t tnow) static unsigned pseudo_random_delay (const ddsi_guid_t *x, const ddsi_guid_t *y, nn_mtime_t tnow)
{ {
/* You know, an ordinary random generator would be even better, but /* You know, an ordinary random generator would be even better, but
the C library doesn't have a reentrant one and I don't feel like the C library doesn't have a reentrant one and I don't feel like
@ -381,7 +381,7 @@ static unsigned pseudo_random_delay (const nn_guid_t *x, const nn_guid_t *y, nn_
return (unsigned) (m >> 32); return (unsigned) (m >> 32);
} }
static void respond_to_spdp (const struct q_globals *gv, const nn_guid_t *dest_proxypp_guid) static void respond_to_spdp (const struct q_globals *gv, const ddsi_guid_t *dest_proxypp_guid)
{ {
struct ephash_enum_participant est; struct ephash_enum_participant est;
struct participant *pp; struct participant *pp;
@ -409,7 +409,7 @@ static void respond_to_spdp (const struct q_globals *gv, const nn_guid_t *dest_p
static int handle_SPDP_dead (const struct receiver_state *rst, nn_wctime_t timestamp, const nn_plist_t *datap, unsigned statusinfo) static int handle_SPDP_dead (const struct receiver_state *rst, nn_wctime_t timestamp, const nn_plist_t *datap, unsigned statusinfo)
{ {
struct q_globals * const gv = rst->gv; struct q_globals * const gv = rst->gv;
nn_guid_t guid; ddsi_guid_t guid;
if (!(gv->logconfig.c.mask & DDS_LC_DISCOVERY)) if (!(gv->logconfig.c.mask & DDS_LC_DISCOVERY))
GVLOGDISC ("SPDP ST%x", statusinfo); GVLOGDISC ("SPDP ST%x", statusinfo);
@ -455,7 +455,7 @@ static void allowmulticast_aware_add_to_addrset (const struct q_globals *gv, uin
add_to_addrset (gv, as, loc); add_to_addrset (gv, as, loc);
} }
static struct proxy_participant *find_ddsi2_proxy_participant (const struct ephash *guid_hash, const nn_guid_t *ppguid) static struct proxy_participant *find_ddsi2_proxy_participant (const struct ephash *guid_hash, const ddsi_guid_t *ppguid)
{ {
struct ephash_enum_proxy_participant it; struct ephash_enum_proxy_participant it;
struct proxy_participant *pp; struct proxy_participant *pp;
@ -469,7 +469,7 @@ static struct proxy_participant *find_ddsi2_proxy_participant (const struct epha
return pp; return pp;
} }
static void make_participants_dependent_on_ddsi2 (struct q_globals *gv, const nn_guid_t *ddsi2guid, nn_wctime_t timestamp) static void make_participants_dependent_on_ddsi2 (struct q_globals *gv, const ddsi_guid_t *ddsi2guid, nn_wctime_t timestamp)
{ {
struct ephash_enum_proxy_participant it; struct ephash_enum_proxy_participant it;
struct proxy_participant *pp, *d2pp; struct proxy_participant *pp, *d2pp;
@ -517,7 +517,7 @@ static int handle_SPDP_alive (const struct receiver_state *rst, seqno_t seq, nn_
struct proxy_participant *proxypp; struct proxy_participant *proxypp;
unsigned builtin_endpoint_set; unsigned builtin_endpoint_set;
unsigned prismtech_builtin_endpoint_set; unsigned prismtech_builtin_endpoint_set;
nn_guid_t privileged_pp_guid; ddsi_guid_t privileged_pp_guid;
dds_duration_t lease_duration; dds_duration_t lease_duration;
unsigned custom_flags = 0; unsigned custom_flags = 0;
@ -646,7 +646,7 @@ static int handle_SPDP_alive (const struct receiver_state *rst, seqno_t seq, nn_
privileged_pp_guid.prefix = rst->src_guid_prefix; privileged_pp_guid.prefix = rst->src_guid_prefix;
privileged_pp_guid.entityid.u = NN_ENTITYID_PARTICIPANT; privileged_pp_guid.entityid.u = NN_ENTITYID_PARTICIPANT;
if ((builtin_endpoint_set & bes_sedp_announcer_mask) != bes_sedp_announcer_mask && if ((builtin_endpoint_set & bes_sedp_announcer_mask) != bes_sedp_announcer_mask &&
memcmp (&privileged_pp_guid, &datap->participant_guid, sizeof (nn_guid_t)) != 0) memcmp (&privileged_pp_guid, &datap->participant_guid, sizeof (ddsi_guid_t)) != 0)
{ {
GVLOGDISC (" (depends on "PGUIDFMT")", PGUID (privileged_pp_guid)); GVLOGDISC (" (depends on "PGUIDFMT")", PGUID (privileged_pp_guid));
/* never expire lease for this proxy: it won't actually expire /* never expire lease for this proxy: it won't actually expire
@ -881,7 +881,7 @@ static void add_locator_to_ps (const nn_locator_t *loc, void *varg)
static int sedp_write_endpoint static int sedp_write_endpoint
( (
struct writer *wr, int alive, const nn_guid_t *epguid, struct writer *wr, int alive, const ddsi_guid_t *epguid,
const struct entity_common *common, const struct endpoint_common *epcommon, const struct entity_common *common, const struct endpoint_common *epcommon,
const dds_qos_t *xqos, struct addrset *as) const dds_qos_t *xqos, struct addrset *as)
{ {
@ -1040,9 +1040,9 @@ static const char *durability_to_string (dds_durability_kind_t k)
return "undefined-durability"; return "undefined-durability";
} }
static struct proxy_participant *implicitly_create_proxypp (struct q_globals *gv, const nn_guid_t *ppguid, nn_plist_t *datap /* note: potentially modifies datap */, const nn_guid_prefix_t *src_guid_prefix, nn_vendorid_t vendorid, nn_wctime_t timestamp, seqno_t seq) static struct proxy_participant *implicitly_create_proxypp (struct q_globals *gv, const ddsi_guid_t *ppguid, nn_plist_t *datap /* note: potentially modifies datap */, const ddsi_guid_prefix_t *src_guid_prefix, nn_vendorid_t vendorid, nn_wctime_t timestamp, seqno_t seq)
{ {
nn_guid_t privguid; ddsi_guid_t privguid;
nn_plist_t pp_plist; nn_plist_t pp_plist;
if (memcmp (&ppguid->prefix, src_guid_prefix, sizeof (ppguid->prefix)) == 0) if (memcmp (&ppguid->prefix, src_guid_prefix, sizeof (ppguid->prefix)) == 0)
@ -1120,14 +1120,14 @@ static struct proxy_participant *implicitly_create_proxypp (struct q_globals *gv
return ephash_lookup_proxy_participant_guid (gv->guid_hash, ppguid); return ephash_lookup_proxy_participant_guid (gv->guid_hash, ppguid);
} }
static void handle_SEDP_alive (const struct receiver_state *rst, seqno_t seq, nn_plist_t *datap /* note: potentially modifies datap */, const nn_guid_prefix_t *src_guid_prefix, nn_vendorid_t vendorid, nn_wctime_t timestamp) static void handle_SEDP_alive (const struct receiver_state *rst, seqno_t seq, nn_plist_t *datap /* note: potentially modifies datap */, const ddsi_guid_prefix_t *src_guid_prefix, nn_vendorid_t vendorid, nn_wctime_t timestamp)
{ {
#define E(msg, lbl) do { GVLOGDISC (msg); goto lbl; } while (0) #define E(msg, lbl) do { GVLOGDISC (msg); goto lbl; } while (0)
struct q_globals * const gv = rst->gv; struct q_globals * const gv = rst->gv;
struct proxy_participant *pp; struct proxy_participant *pp;
struct proxy_writer * pwr = NULL; struct proxy_writer * pwr = NULL;
struct proxy_reader * prd = NULL; struct proxy_reader * prd = NULL;
nn_guid_t ppguid; ddsi_guid_t ppguid;
dds_qos_t *xqos; dds_qos_t *xqos;
int reliable; int reliable;
struct addrset *as; struct addrset *as;
@ -1466,7 +1466,7 @@ int sedp_write_cm_participant (struct participant *pp, int alive)
return ret; return ret;
} }
static void handle_SEDP_CM (const struct receiver_state *rst, nn_entityid_t wr_entity_id, nn_wctime_t timestamp, uint32_t statusinfo, const void *vdata, uint32_t len) static void handle_SEDP_CM (const struct receiver_state *rst, ddsi_entityid_t wr_entity_id, nn_wctime_t timestamp, uint32_t statusinfo, const void *vdata, uint32_t len)
{ {
struct q_globals * const gv = rst->gv; struct q_globals * const gv = rst->gv;
const struct CDRHeader *data = vdata; /* built-ins not deserialized (yet) */ const struct CDRHeader *data = vdata; /* built-ins not deserialized (yet) */
@ -1552,7 +1552,7 @@ static int defragment (unsigned char **datap, const struct nn_rdata *fragchain,
} }
} }
int builtins_dqueue_handler (const struct nn_rsample_info *sampleinfo, const struct nn_rdata *fragchain, UNUSED_ARG (const nn_guid_t *rdguid), UNUSED_ARG (void *qarg)) int builtins_dqueue_handler (const struct nn_rsample_info *sampleinfo, const struct nn_rdata *fragchain, UNUSED_ARG (const ddsi_guid_t *rdguid), UNUSED_ARG (void *qarg))
{ {
struct q_globals * const gv = sampleinfo->rst->gv; struct q_globals * const gv = sampleinfo->rst->gv;
struct proxy_writer *pwr; struct proxy_writer *pwr;
@ -1564,7 +1564,7 @@ int builtins_dqueue_handler (const struct nn_rsample_info *sampleinfo, const str
} keyhash_payload; } keyhash_payload;
unsigned statusinfo; unsigned statusinfo;
int need_keyhash; int need_keyhash;
nn_guid_t srcguid; ddsi_guid_t srcguid;
Data_DataFrag_common_t *msg; Data_DataFrag_common_t *msg;
unsigned char data_smhdr_flags; unsigned char data_smhdr_flags;
nn_plist_t qos; nn_plist_t qos;

View file

@ -42,7 +42,7 @@
#include "dds/ddsi/ddsi_mcgroup.h" #include "dds/ddsi/ddsi_mcgroup.h"
#include "dds/ddsi/q_receive.h" #include "dds/ddsi/q_receive.h"
#include "dds/ddsi/ddsi_udp.h" /* nn_mc4gen_address_t */ #include "dds/ddsi/ddsi_udp.h" /* nn_mc4gen_address_t */
#include "dds/ddsi/q_rhc.h" #include "dds/ddsi/ddsi_rhc.h"
#include "dds/ddsi/sysdeps.h" #include "dds/ddsi/sysdeps.h"
#include "dds__whc.h" #include "dds__whc.h"
@ -51,7 +51,7 @@
struct deleted_participant { struct deleted_participant {
ddsrt_avl_node_t avlnode; ddsrt_avl_node_t avlnode;
nn_guid_t guid; ddsi_guid_t guid;
unsigned for_what; unsigned for_what;
nn_mtime_t t_prune; nn_mtime_t t_prune;
}; };
@ -92,10 +92,10 @@ static const unsigned prismtech_builtin_writers_besmask =
NN_DISC_BUILTIN_ENDPOINT_CM_PUBLISHER_WRITER | NN_DISC_BUILTIN_ENDPOINT_CM_PUBLISHER_WRITER |
NN_DISC_BUILTIN_ENDPOINT_CM_SUBSCRIBER_WRITER; NN_DISC_BUILTIN_ENDPOINT_CM_SUBSCRIBER_WRITER;
static dds_return_t new_writer_guid (struct writer **wr_out, const struct nn_guid *guid, const struct nn_guid *group_guid, struct participant *pp, const struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct whc *whc, status_cb_t status_cb, void *status_cbarg); static dds_return_t new_writer_guid (struct writer **wr_out, const struct ddsi_guid *guid, const struct ddsi_guid *group_guid, struct participant *pp, const struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct whc *whc, status_cb_t status_cb, void *status_cbarg);
static dds_return_t new_reader_guid (struct reader **rd_out, const struct nn_guid *guid, const struct nn_guid *group_guid, struct participant *pp, const struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct rhc *rhc, status_cb_t status_cb, void *status_cbarg); static dds_return_t new_reader_guid (struct reader **rd_out, const struct ddsi_guid *guid, const struct ddsi_guid *group_guid, struct participant *pp, const struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct ddsi_rhc *rhc, status_cb_t status_cb, void *status_cbarg);
static struct participant *ref_participant (struct participant *pp, const struct nn_guid *guid_of_refing_entity); static struct participant *ref_participant (struct participant *pp, const struct ddsi_guid *guid_of_refing_entity);
static void unref_participant (struct participant *pp, const struct nn_guid *guid_of_refing_entity); static void unref_participant (struct participant *pp, const struct ddsi_guid *guid_of_refing_entity);
static int gcreq_participant (struct participant *pp); static int gcreq_participant (struct participant *pp);
static int gcreq_writer (struct writer *wr); static int gcreq_writer (struct writer *wr);
@ -104,24 +104,24 @@ static int gcreq_proxy_participant (struct proxy_participant *proxypp);
static int gcreq_proxy_writer (struct proxy_writer *pwr); static int gcreq_proxy_writer (struct proxy_writer *pwr);
static int gcreq_proxy_reader (struct proxy_reader *prd); static int gcreq_proxy_reader (struct proxy_reader *prd);
extern inline bool builtintopic_is_visible (const struct ddsi_builtin_topic_interface *btif, const struct nn_guid *guid, nn_vendorid_t vendorid); extern inline bool builtintopic_is_visible (const struct ddsi_builtin_topic_interface *btif, const struct ddsi_guid *guid, nn_vendorid_t vendorid);
extern inline bool builtintopic_is_builtintopic (const struct ddsi_builtin_topic_interface *btif, const struct ddsi_sertopic *topic); extern inline bool builtintopic_is_builtintopic (const struct ddsi_builtin_topic_interface *btif, const struct ddsi_sertopic *topic);
extern inline struct ddsi_tkmap_instance *builtintopic_get_tkmap_entry (const struct ddsi_builtin_topic_interface *btif, const struct nn_guid *guid); extern inline struct ddsi_tkmap_instance *builtintopic_get_tkmap_entry (const struct ddsi_builtin_topic_interface *btif, const struct ddsi_guid *guid);
extern inline void builtintopic_write (const struct ddsi_builtin_topic_interface *btif, const struct entity_common *e, nn_wctime_t timestamp, bool alive); extern inline void builtintopic_write (const struct ddsi_builtin_topic_interface *btif, const struct entity_common *e, nn_wctime_t timestamp, bool alive);
static int compare_guid (const void *va, const void *vb) static int compare_guid (const void *va, const void *vb)
{ {
return memcmp (va, vb, sizeof (nn_guid_t)); return memcmp (va, vb, sizeof (ddsi_guid_t));
} }
nn_entityid_t to_entityid (unsigned u) ddsi_entityid_t to_entityid (unsigned u)
{ {
nn_entityid_t e; ddsi_entityid_t e;
e.u = u; e.u = u;
return e; return e;
} }
int is_writer_entityid (nn_entityid_t id) int is_writer_entityid (ddsi_entityid_t id)
{ {
switch (id.u & NN_ENTITYID_KIND_MASK) switch (id.u & NN_ENTITYID_KIND_MASK)
{ {
@ -133,7 +133,7 @@ int is_writer_entityid (nn_entityid_t id)
} }
} }
int is_reader_entityid (nn_entityid_t id) int is_reader_entityid (ddsi_entityid_t id)
{ {
switch (id.u & NN_ENTITYID_KIND_MASK) switch (id.u & NN_ENTITYID_KIND_MASK)
{ {
@ -145,7 +145,7 @@ int is_reader_entityid (nn_entityid_t id)
} }
} }
int is_keyed_endpoint_entityid (nn_entityid_t id) int is_keyed_endpoint_entityid (ddsi_entityid_t id)
{ {
switch (id.u & NN_ENTITYID_KIND_MASK) switch (id.u & NN_ENTITYID_KIND_MASK)
{ {
@ -160,7 +160,7 @@ int is_keyed_endpoint_entityid (nn_entityid_t id)
} }
} }
int is_builtin_entityid (nn_entityid_t id, nn_vendorid_t vendorid) int is_builtin_entityid (ddsi_entityid_t id, nn_vendorid_t vendorid)
{ {
if ((id.u & NN_ENTITYID_SOURCE_MASK) == NN_ENTITYID_SOURCE_BUILTIN) if ((id.u & NN_ENTITYID_SOURCE_MASK) == NN_ENTITYID_SOURCE_BUILTIN)
return 1; return 1;
@ -175,7 +175,7 @@ int is_builtin_entityid (nn_entityid_t id, nn_vendorid_t vendorid)
} }
} }
int is_builtin_endpoint (nn_entityid_t id, nn_vendorid_t vendorid) int is_builtin_endpoint (ddsi_entityid_t id, nn_vendorid_t vendorid)
{ {
return is_builtin_entityid (id, vendorid) && id.u != NN_ENTITYID_PARTICIPANT; return is_builtin_entityid (id, vendorid) && id.u != NN_ENTITYID_PARTICIPANT;
} }
@ -186,7 +186,7 @@ bool is_local_orphan_endpoint (const struct entity_common *e)
is_builtin_endpoint (e->guid.entityid, NN_VENDORID_ECLIPSE)); is_builtin_endpoint (e->guid.entityid, NN_VENDORID_ECLIPSE));
} }
static void entity_common_init (struct entity_common *e, struct q_globals *gv, const struct nn_guid *guid, const char *name, enum entity_kind kind, nn_wctime_t tcreate, nn_vendorid_t vendorid, bool onlylocal) static void entity_common_init (struct entity_common *e, struct q_globals *gv, const struct ddsi_guid *guid, const char *name, enum entity_kind kind, nn_wctime_t tcreate, nn_vendorid_t vendorid, bool onlylocal)
{ {
e->guid = *guid; e->guid = *guid;
e->kind = kind; e->kind = kind;
@ -296,6 +296,14 @@ nn_vendorid_t get_entity_vendorid (const struct entity_common *e)
return NN_VENDORID_UNKNOWN; return NN_VENDORID_UNKNOWN;
} }
void ddsi_make_writer_info(struct ddsi_writer_info *wrinfo, const struct entity_common *e, const struct dds_qos *xqos)
{
wrinfo->guid = e->guid;
wrinfo->ownership_strength = xqos->ownership_strength.value;
wrinfo->auto_dispose = xqos->writer_data_lifecycle.autodispose_unregistered_instances;
wrinfo->iid = e->iid;
}
/* DELETED PARTICIPANTS --------------------------------------------- */ /* DELETED PARTICIPANTS --------------------------------------------- */
struct deleted_participants_admin *deleted_participants_admin_new (int64_t delay) struct deleted_participants_admin *deleted_participants_admin_new (int64_t delay)
@ -340,7 +348,7 @@ static void prune_deleted_participant_guids (struct deleted_participants_admin *
ddsrt_mutex_unlock (&admin->deleted_participants_lock); ddsrt_mutex_unlock (&admin->deleted_participants_lock);
} }
static void remember_deleted_participant_guid (struct deleted_participants_admin *admin, const struct nn_guid *guid) static void remember_deleted_participant_guid (struct deleted_participants_admin *admin, const struct ddsi_guid *guid)
{ {
struct deleted_participant *n; struct deleted_participant *n;
ddsrt_avl_ipath_t path; ddsrt_avl_ipath_t path;
@ -358,7 +366,7 @@ static void remember_deleted_participant_guid (struct deleted_participants_admin
ddsrt_mutex_unlock (&admin->deleted_participants_lock); ddsrt_mutex_unlock (&admin->deleted_participants_lock);
} }
int is_deleted_participant_guid (struct deleted_participants_admin *admin, const struct nn_guid *guid, unsigned for_what) int is_deleted_participant_guid (struct deleted_participants_admin *admin, const struct ddsi_guid *guid, unsigned for_what)
{ {
struct deleted_participant *n; struct deleted_participant *n;
int known; int known;
@ -372,7 +380,7 @@ int is_deleted_participant_guid (struct deleted_participants_admin *admin, const
return known; return known;
} }
static void remove_deleted_participant_guid (ddsrt_log_cfg_t *logcfg, struct deleted_participants_admin *admin, const struct nn_guid *guid, unsigned for_what) static void remove_deleted_participant_guid (ddsrt_log_cfg_t *logcfg, struct deleted_participants_admin *admin, const struct ddsi_guid *guid, unsigned for_what)
{ {
struct deleted_participant *n; struct deleted_participant *n;
DDS_CLOG (DDS_LC_DISCOVERY, logcfg, "remove_deleted_participant_guid("PGUIDFMT" for_what=%x)\n", PGUID (*guid), for_what); DDS_CLOG (DDS_LC_DISCOVERY, logcfg, "remove_deleted_participant_guid("PGUIDFMT" for_what=%x)\n", PGUID (*guid), for_what);
@ -417,7 +425,7 @@ static bool update_qos_locked (struct entity_common *e, dds_qos_t *ent_qos, cons
return true; return true;
} }
static dds_return_t pp_allocate_entityid(nn_entityid_t *id, uint32_t kind, struct participant *pp) static dds_return_t pp_allocate_entityid(ddsi_entityid_t *id, uint32_t kind, struct participant *pp)
{ {
uint32_t id1; uint32_t id1;
int ret = 0; int ret = 0;
@ -436,17 +444,17 @@ static dds_return_t pp_allocate_entityid(nn_entityid_t *id, uint32_t kind, struc
return ret; return ret;
} }
static void pp_release_entityid(struct participant *pp, nn_entityid_t id) static void pp_release_entityid(struct participant *pp, ddsi_entityid_t id)
{ {
ddsrt_mutex_lock (&pp->e.lock); ddsrt_mutex_lock (&pp->e.lock);
inverse_uint32_set_free(&pp->avail_entityids.x, id.u / NN_ENTITYID_ALLOCSTEP); inverse_uint32_set_free(&pp->avail_entityids.x, id.u / NN_ENTITYID_ALLOCSTEP);
ddsrt_mutex_unlock (&pp->e.lock); ddsrt_mutex_unlock (&pp->e.lock);
} }
dds_return_t new_participant_guid (const nn_guid_t *ppguid, struct q_globals *gv, unsigned flags, const nn_plist_t *plist) dds_return_t new_participant_guid (const ddsi_guid_t *ppguid, struct q_globals *gv, unsigned flags, const nn_plist_t *plist)
{ {
struct participant *pp; struct participant *pp;
nn_guid_t subguid, group_guid; ddsi_guid_t subguid, group_guid;
/* no reserved bits may be set */ /* no reserved bits may be set */
assert ((flags & ~(RTPS_PF_NO_BUILTIN_READERS | RTPS_PF_NO_BUILTIN_WRITERS | RTPS_PF_PRIVILEGED_PP | RTPS_PF_IS_DDSI2_PP | RTPS_PF_ONLY_LOCAL)) == 0); assert ((flags & ~(RTPS_PF_NO_BUILTIN_READERS | RTPS_PF_NO_BUILTIN_WRITERS | RTPS_PF_PRIVILEGED_PP | RTPS_PF_IS_DDSI2_PP | RTPS_PF_ONLY_LOCAL)) == 0);
@ -699,7 +707,7 @@ dds_return_t new_participant_guid (const nn_guid_t *ppguid, struct q_globals *gv
return 0; return 0;
} }
dds_return_t new_participant (nn_guid_t *p_ppguid, struct q_globals *gv, unsigned flags, const nn_plist_t *plist) dds_return_t new_participant (ddsi_guid_t *p_ppguid, struct q_globals *gv, unsigned flags, const nn_plist_t *plist)
{ {
union { uint64_t u64; uint32_t u32[2]; } u; union { uint64_t u64; uint32_t u32[2]; } u;
u.u32[0] = gv->ppguid_base.prefix.u[1]; u.u32[0] = gv->ppguid_base.prefix.u[1];
@ -720,9 +728,9 @@ void update_participant_plist (struct participant *pp, const nn_plist_t *plist)
ddsrt_mutex_unlock (&pp->e.lock); ddsrt_mutex_unlock (&pp->e.lock);
} }
static void delete_builtin_endpoint (struct q_globals *gv, const struct nn_guid *ppguid, unsigned entityid) static void delete_builtin_endpoint (struct q_globals *gv, const struct ddsi_guid *ppguid, unsigned entityid)
{ {
nn_guid_t guid; ddsi_guid_t guid;
guid.prefix = ppguid->prefix; guid.prefix = ppguid->prefix;
guid.entityid.u = entityid; guid.entityid.u = entityid;
assert (is_builtin_entityid (to_entityid (entityid), NN_VENDORID_ECLIPSE)); assert (is_builtin_entityid (to_entityid (entityid), NN_VENDORID_ECLIPSE));
@ -732,9 +740,9 @@ static void delete_builtin_endpoint (struct q_globals *gv, const struct nn_guid
(void)delete_reader (gv, &guid); (void)delete_reader (gv, &guid);
} }
static struct participant *ref_participant (struct participant *pp, const struct nn_guid *guid_of_refing_entity) static struct participant *ref_participant (struct participant *pp, const struct ddsi_guid *guid_of_refing_entity)
{ {
nn_guid_t stguid; ddsi_guid_t stguid;
ddsrt_mutex_lock (&pp->refc_lock); ddsrt_mutex_lock (&pp->refc_lock);
if (guid_of_refing_entity && is_builtin_endpoint (guid_of_refing_entity->entityid, NN_VENDORID_ECLIPSE)) if (guid_of_refing_entity && is_builtin_endpoint (guid_of_refing_entity->entityid, NN_VENDORID_ECLIPSE))
pp->builtin_refc++; pp->builtin_refc++;
@ -751,7 +759,7 @@ static struct participant *ref_participant (struct participant *pp, const struct
return pp; return pp;
} }
static void unref_participant (struct participant *pp, const struct nn_guid *guid_of_refing_entity) static void unref_participant (struct participant *pp, const struct ddsi_guid *guid_of_refing_entity)
{ {
static const unsigned builtin_endpoints_tab[] = { static const unsigned builtin_endpoints_tab[] = {
NN_ENTITYID_SPDP_BUILTIN_PARTICIPANT_WRITER, NN_ENTITYID_SPDP_BUILTIN_PARTICIPANT_WRITER,
@ -772,7 +780,7 @@ static void unref_participant (struct participant *pp, const struct nn_guid *gui
NN_ENTITYID_SEDP_BUILTIN_CM_SUBSCRIBER_WRITER, NN_ENTITYID_SEDP_BUILTIN_CM_SUBSCRIBER_WRITER,
NN_ENTITYID_SEDP_BUILTIN_CM_SUBSCRIBER_READER NN_ENTITYID_SEDP_BUILTIN_CM_SUBSCRIBER_READER
}; };
nn_guid_t stguid; ddsi_guid_t stguid;
ddsrt_mutex_lock (&pp->refc_lock); ddsrt_mutex_lock (&pp->refc_lock);
if (guid_of_refing_entity && is_builtin_endpoint (guid_of_refing_entity->entityid, NN_VENDORID_ECLIPSE)) if (guid_of_refing_entity && is_builtin_endpoint (guid_of_refing_entity->entityid, NN_VENDORID_ECLIPSE))
@ -903,7 +911,7 @@ static void gc_delete_participant (struct gcreq *gcreq)
unref_participant (pp, NULL); unref_participant (pp, NULL);
} }
dds_return_t delete_participant (struct q_globals *gv, const struct nn_guid *ppguid) dds_return_t delete_participant (struct q_globals *gv, const struct ddsi_guid *ppguid)
{ {
struct participant *pp; struct participant *pp;
if ((pp = ephash_lookup_participant_guid (gv->guid_hash, ppguid)) == NULL) if ((pp = ephash_lookup_participant_guid (gv->guid_hash, ppguid)) == NULL)
@ -917,7 +925,7 @@ dds_return_t delete_participant (struct q_globals *gv, const struct nn_guid *ppg
struct writer *get_builtin_writer (const struct participant *pp, unsigned entityid) struct writer *get_builtin_writer (const struct participant *pp, unsigned entityid)
{ {
nn_guid_t bwr_guid; ddsi_guid_t bwr_guid;
unsigned bes_mask = 0, prismtech_bes_mask = 0; unsigned bes_mask = 0, prismtech_bes_mask = 0;
if (pp->e.onlylocal) { if (pp->e.onlylocal) {
@ -1387,7 +1395,7 @@ static void free_wr_rd_match (struct wr_rd_match *m)
if (m) ddsrt_free (m); if (m) ddsrt_free (m);
} }
static void writer_drop_connection (const struct nn_guid *wr_guid, const struct proxy_reader *prd) static void writer_drop_connection (const struct ddsi_guid *wr_guid, const struct proxy_reader *prd)
{ {
struct writer *wr; struct writer *wr;
if ((wr = ephash_lookup_writer_guid (prd->e.gv->guid_hash, wr_guid)) != NULL) if ((wr = ephash_lookup_writer_guid (prd->e.gv->guid_hash, wr_guid)) != NULL)
@ -1417,7 +1425,7 @@ static void writer_drop_connection (const struct nn_guid *wr_guid, const struct
} }
} }
static void writer_drop_local_connection (const struct nn_guid *wr_guid, struct reader *rd) static void writer_drop_local_connection (const struct ddsi_guid *wr_guid, struct reader *rd)
{ {
/* Only called by gc_delete_reader, so we actually have a reader pointer */ /* Only called by gc_delete_reader, so we actually have a reader pointer */
struct writer *wr; struct writer *wr;
@ -1444,7 +1452,7 @@ static void writer_drop_local_connection (const struct nn_guid *wr_guid, struct
} }
} }
static void reader_drop_connection (const struct nn_guid *rd_guid, const struct proxy_writer *pwr) static void reader_drop_connection (const struct ddsi_guid *rd_guid, const struct proxy_writer *pwr)
{ {
struct reader *rd; struct reader *rd;
if ((rd = ephash_lookup_reader_guid (pwr->e.gv->guid_hash, rd_guid)) != NULL) if ((rd = ephash_lookup_reader_guid (pwr->e.gv->guid_hash, rd_guid)) != NULL)
@ -1458,9 +1466,9 @@ static void reader_drop_connection (const struct nn_guid *rd_guid, const struct
{ {
if (rd->rhc) if (rd->rhc)
{ {
struct proxy_writer_info pwr_info; struct ddsi_writer_info wrinfo;
make_proxy_writer_info (&pwr_info, &pwr->e, pwr->c.xqos); ddsi_make_writer_info (&wrinfo, &pwr->e, pwr->c.xqos);
rhc_unregister_wr (rd->rhc, &pwr_info); ddsi_rhc_unregister_wr (rd->rhc, &wrinfo);
} }
if (rd->status_cb) if (rd->status_cb)
{ {
@ -1480,7 +1488,7 @@ static void reader_drop_connection (const struct nn_guid *rd_guid, const struct
} }
} }
static void reader_drop_local_connection (const struct nn_guid *rd_guid, const struct writer *wr) static void reader_drop_local_connection (const struct ddsi_guid *rd_guid, const struct writer *wr)
{ {
struct reader *rd; struct reader *rd;
if ((rd = ephash_lookup_reader_guid (wr->e.gv->guid_hash, rd_guid)) != NULL) if ((rd = ephash_lookup_reader_guid (wr->e.gv->guid_hash, rd_guid)) != NULL)
@ -1495,9 +1503,9 @@ static void reader_drop_local_connection (const struct nn_guid *rd_guid, const s
if (rd->rhc) if (rd->rhc)
{ {
/* FIXME: */ /* FIXME: */
struct proxy_writer_info pwr_info; struct ddsi_writer_info wrinfo;
make_proxy_writer_info(&pwr_info, &wr->e, wr->xqos); ddsi_make_writer_info (&wrinfo, &wr->e, wr->xqos);
rhc_unregister_wr (rd->rhc, &pwr_info); ddsi_rhc_unregister_wr (rd->rhc, &wrinfo);
} }
if (rd->status_cb) if (rd->status_cb)
{ {
@ -1517,7 +1525,7 @@ static void reader_drop_local_connection (const struct nn_guid *rd_guid, const s
} }
} }
static void update_reader_init_acknack_count (const ddsrt_log_cfg_t *logcfg, const struct ephash *guid_hash, const struct nn_guid *rd_guid, nn_count_t count) static void update_reader_init_acknack_count (const ddsrt_log_cfg_t *logcfg, const struct ephash *guid_hash, const struct ddsi_guid *rd_guid, nn_count_t count)
{ {
struct reader *rd; struct reader *rd;
@ -1539,7 +1547,7 @@ static void update_reader_init_acknack_count (const ddsrt_log_cfg_t *logcfg, con
} }
} }
static void proxy_writer_drop_connection (const struct nn_guid *pwr_guid, struct reader *rd) static void proxy_writer_drop_connection (const struct ddsi_guid *pwr_guid, struct reader *rd)
{ {
/* Only called by gc_delete_reader, so we actually have a reader pointer */ /* Only called by gc_delete_reader, so we actually have a reader pointer */
struct proxy_writer *pwr; struct proxy_writer *pwr;
@ -1574,7 +1582,7 @@ static void proxy_writer_drop_connection (const struct nn_guid *pwr_guid, struct
} }
} }
static void proxy_reader_drop_connection (const struct nn_guid *prd_guid, struct writer *wr) static void proxy_reader_drop_connection (const struct ddsi_guid *prd_guid, struct writer *wr)
{ {
struct proxy_reader *prd; struct proxy_reader *prd;
if ((prd = ephash_lookup_proxy_reader_guid (wr->e.gv->guid_hash, prd_guid)) != NULL) if ((prd = ephash_lookup_proxy_reader_guid (wr->e.gv->guid_hash, prd_guid)) != NULL)
@ -1719,12 +1727,12 @@ static void writer_add_local_connection (struct writer *wr, struct reader *rd)
whc_sample_iter_init(wr->whc, &it); whc_sample_iter_init(wr->whc, &it);
while (whc_sample_iter_borrow_next(&it, &sample)) while (whc_sample_iter_borrow_next(&it, &sample))
{ {
struct proxy_writer_info pwr_info; struct ddsi_writer_info wrinfo;
struct ddsi_serdata *payload = sample.serdata; struct ddsi_serdata *payload = sample.serdata;
/* FIXME: whc has tk reference in its index nodes, which is what we really should be iterating over anyway, and so we don't really have to look them up anymore */ /* FIXME: whc has tk reference in its index nodes, which is what we really should be iterating over anyway, and so we don't really have to look them up anymore */
struct ddsi_tkmap_instance *tk = ddsi_tkmap_lookup_instance_ref (tkmap, payload); struct ddsi_tkmap_instance *tk = ddsi_tkmap_lookup_instance_ref (tkmap, payload);
make_proxy_writer_info (&pwr_info, &wr->e, wr->xqos); ddsi_make_writer_info (&wrinfo, &wr->e, wr->xqos);
(void) rhc_store (rd->rhc, &pwr_info, payload, tk); (void) ddsi_rhc_store (rd->rhc, &wrinfo, payload, tk);
ddsi_tkmap_instance_unref (tkmap, tk); ddsi_tkmap_instance_unref (tkmap, tk);
} }
} }
@ -2004,9 +2012,9 @@ static void proxy_reader_add_connection (struct proxy_reader *prd, struct writer
} }
} }
static nn_entityid_t builtin_entityid_match (nn_entityid_t x) static ddsi_entityid_t builtin_entityid_match (ddsi_entityid_t x)
{ {
nn_entityid_t res; ddsi_entityid_t res;
res.u = 0; res.u = 0;
switch (x.u) switch (x.u)
{ {
@ -2153,7 +2161,7 @@ static void connect_proxy_writer_with_reader (struct proxy_writer *pwr, struct r
proxy_writer_add_connection (pwr, rd, tnow, init_count); proxy_writer_add_connection (pwr, rd, tnow, init_count);
} }
static bool ignore_local_p (const nn_guid_t *guid1, const nn_guid_t *guid2, const struct dds_qos *xqos1, const struct dds_qos *xqos2) static bool ignore_local_p (const ddsi_guid_t *guid1, const ddsi_guid_t *guid2, const struct dds_qos *xqos1, const struct dds_qos *xqos2)
{ {
assert (xqos1->present & QP_CYCLONE_IGNORELOCAL); assert (xqos1->present & QP_CYCLONE_IGNORELOCAL);
assert (xqos2->present & QP_CYCLONE_IGNORELOCAL); assert (xqos2->present & QP_CYCLONE_IGNORELOCAL);
@ -2372,7 +2380,7 @@ static void generic_do_match (struct entity_common *e, nn_mtime_t tnow)
else else
{ {
/* Built-ins have fixed QoS */ /* Built-ins have fixed QoS */
nn_entityid_t tgt_ent = builtin_entityid_match (e->guid.entityid); ddsi_entityid_t tgt_ent = builtin_entityid_match (e->guid.entityid);
enum entity_kind pkind = generic_do_match_isproxy (e) ? EK_PARTICIPANT : EK_PROXY_PARTICIPANT; enum entity_kind pkind = generic_do_match_isproxy (e) ? EK_PARTICIPANT : EK_PROXY_PARTICIPANT;
EELOGDISC (e, "match_%s_with_%ss(%s "PGUIDFMT") scanning %sparticipants tgt=%"PRIx32"\n", EELOGDISC (e, "match_%s_with_%ss(%s "PGUIDFMT") scanning %sparticipants tgt=%"PRIx32"\n",
generic_do_match_kindstr_us (e->kind), generic_do_match_kindstr_us (mkind), generic_do_match_kindstr_us (e->kind), generic_do_match_kindstr_us (mkind),
@ -2385,7 +2393,7 @@ static void generic_do_match (struct entity_common *e, nn_mtime_t tnow)
ephash_enum_init (&est, guid_hash, pkind); ephash_enum_init (&est, guid_hash, pkind);
while ((ep = ephash_enum_next (&est)) != NULL) while ((ep = ephash_enum_next (&est)) != NULL)
{ {
nn_guid_t tgt_guid; ddsi_guid_t tgt_guid;
tgt_guid.prefix = ep->guid.prefix; tgt_guid.prefix = ep->guid.prefix;
tgt_guid.entityid = tgt_ent; tgt_guid.entityid = tgt_ent;
if ((em = ephash_lookup_guid (guid_hash, &tgt_guid, mkind)) != NULL) if ((em = ephash_lookup_guid (guid_hash, &tgt_guid, mkind)) != NULL)
@ -2452,7 +2460,7 @@ static void match_proxy_reader_with_writers (struct proxy_reader *prd, nn_mtime_
/* ENDPOINT --------------------------------------------------------- */ /* ENDPOINT --------------------------------------------------------- */
static void new_reader_writer_common (const struct ddsrt_log_cfg *logcfg, const struct nn_guid *guid, const struct ddsi_sertopic *topic, const struct dds_qos *xqos) static void new_reader_writer_common (const struct ddsrt_log_cfg *logcfg, const struct ddsi_guid *guid, const struct ddsi_sertopic *topic, const struct dds_qos *xqos)
{ {
const char *partition = "(default)"; const char *partition = "(default)";
const char *partition_suffix = ""; const char *partition_suffix = "";
@ -2478,7 +2486,7 @@ static void new_reader_writer_common (const struct ddsrt_log_cfg *logcfg, const
topic ? topic->type_name : "(null)"); topic ? topic->type_name : "(null)");
} }
static void endpoint_common_init (struct entity_common *e, struct endpoint_common *c, struct q_globals *gv, enum entity_kind kind, const struct nn_guid *guid, const struct nn_guid *group_guid, struct participant *pp, bool onlylocal) static void endpoint_common_init (struct entity_common *e, struct endpoint_common *c, struct q_globals *gv, enum entity_kind kind, const struct ddsi_guid *guid, const struct ddsi_guid *group_guid, struct participant *pp, bool onlylocal)
{ {
entity_common_init (e, gv, guid, NULL, kind, now (), NN_VENDORID_ECLIPSE, pp->e.onlylocal || onlylocal); entity_common_init (e, gv, guid, NULL, kind, now (), NN_VENDORID_ECLIPSE, pp->e.onlylocal || onlylocal);
c->pp = ref_participant (pp, &e->guid); c->pp = ref_participant (pp, &e->guid);
@ -2867,7 +2875,7 @@ static void new_writer_guid_common_init (struct writer *wr, const struct ddsi_se
local_reader_ary_init (&wr->rdary); local_reader_ary_init (&wr->rdary);
} }
static dds_return_t new_writer_guid (struct writer **wr_out, const struct nn_guid *guid, const struct nn_guid *group_guid, struct participant *pp, const struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct whc *whc, status_cb_t status_cb, void *status_entity) static dds_return_t new_writer_guid (struct writer **wr_out, const struct ddsi_guid *guid, const struct ddsi_guid *group_guid, struct participant *pp, const struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct whc *whc, status_cb_t status_cb, void *status_entity)
{ {
struct writer *wr; struct writer *wr;
nn_mtime_t tnow = now_mt (); nn_mtime_t tnow = now_mt ();
@ -2918,7 +2926,7 @@ static dds_return_t new_writer_guid (struct writer **wr_out, const struct nn_gui
return 0; return 0;
} }
dds_return_t new_writer (struct writer **wr_out, struct q_globals *gv, struct nn_guid *wrguid, const struct nn_guid *group_guid, const struct nn_guid *ppguid, const struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct whc * whc, status_cb_t status_cb, void *status_cb_arg) dds_return_t new_writer (struct writer **wr_out, struct q_globals *gv, struct ddsi_guid *wrguid, const struct ddsi_guid *group_guid, const struct ddsi_guid *ppguid, const struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct whc * whc, status_cb_t status_cb, void *status_cb_arg)
{ {
struct participant *pp; struct participant *pp;
dds_return_t rc; dds_return_t rc;
@ -2940,9 +2948,9 @@ dds_return_t new_writer (struct writer **wr_out, struct q_globals *gv, struct nn
return new_writer_guid (wr_out, wrguid, group_guid, pp, topic, xqos, whc, status_cb, status_cb_arg); return new_writer_guid (wr_out, wrguid, group_guid, pp, topic, xqos, whc, status_cb, status_cb_arg);
} }
struct local_orphan_writer *new_local_orphan_writer (struct q_globals *gv, nn_entityid_t entityid, struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct whc *whc) struct local_orphan_writer *new_local_orphan_writer (struct q_globals *gv, ddsi_entityid_t entityid, struct ddsi_sertopic *topic, const struct dds_qos *xqos, struct whc *whc)
{ {
nn_guid_t guid; ddsi_guid_t guid;
struct local_orphan_writer *lowr; struct local_orphan_writer *lowr;
struct writer *wr; struct writer *wr;
nn_mtime_t tnow = now_mt (); nn_mtime_t tnow = now_mt ();
@ -3073,7 +3081,7 @@ dds_return_t delete_writer_nolinger_locked (struct writer *wr)
return 0; return 0;
} }
dds_return_t delete_writer_nolinger (struct q_globals *gv, const struct nn_guid *guid) dds_return_t delete_writer_nolinger (struct q_globals *gv, const struct ddsi_guid *guid)
{ {
struct writer *wr; struct writer *wr;
/* We take no care to ensure application writers are not deleted /* We take no care to ensure application writers are not deleted
@ -3102,7 +3110,7 @@ void delete_local_orphan_writer (struct local_orphan_writer *lowr)
ddsrt_mutex_unlock (&lowr->wr.e.lock); ddsrt_mutex_unlock (&lowr->wr.e.lock);
} }
dds_return_t delete_writer (struct q_globals *gv, const struct nn_guid *guid) dds_return_t delete_writer (struct q_globals *gv, const struct ddsi_guid *guid)
{ {
struct writer *wr; struct writer *wr;
struct whc_state whcst; struct whc_state whcst;
@ -3250,12 +3258,12 @@ static void leave_mcast_helper (const nn_locator_t *n, void *varg)
static dds_return_t new_reader_guid static dds_return_t new_reader_guid
( (
struct reader **rd_out, struct reader **rd_out,
const struct nn_guid *guid, const struct ddsi_guid *guid,
const struct nn_guid *group_guid, const struct ddsi_guid *group_guid,
struct participant *pp, struct participant *pp,
const struct ddsi_sertopic *topic, const struct ddsi_sertopic *topic,
const struct dds_qos *xqos, const struct dds_qos *xqos,
struct rhc *rhc, struct ddsi_rhc *rhc,
status_cb_t status_cb, status_cb_t status_cb,
void * status_entity void * status_entity
) )
@ -3311,7 +3319,7 @@ static dds_return_t new_reader_guid
/* set rhc qos for reader */ /* set rhc qos for reader */
if (rhc) if (rhc)
{ {
rhc_set_qos (rd->rhc, rd->xqos); ddsi_rhc_set_qos (rd->rhc, rd->xqos);
} }
assert (rd->xqos->present & QP_LIVELINESS); assert (rd->xqos->present & QP_LIVELINESS);
if (rd->xqos->liveliness.kind != DDS_LIVELINESS_AUTOMATIC || rd->xqos->liveliness.lease_duration != T_NEVER) if (rd->xqos->liveliness.kind != DDS_LIVELINESS_AUTOMATIC || rd->xqos->liveliness.lease_duration != T_NEVER)
@ -3392,12 +3400,12 @@ dds_return_t new_reader
( (
struct reader **rd_out, struct reader **rd_out,
struct q_globals *gv, struct q_globals *gv,
struct nn_guid *rdguid, struct ddsi_guid *rdguid,
const struct nn_guid *group_guid, const struct ddsi_guid *group_guid,
const struct nn_guid *ppguid, const struct ddsi_guid *ppguid,
const struct ddsi_sertopic *topic, const struct ddsi_sertopic *topic,
const struct dds_qos *xqos, const struct dds_qos *xqos,
struct rhc * rhc, struct ddsi_rhc * rhc,
status_cb_t status_cb, status_cb_t status_cb,
void * status_cbarg void * status_cbarg
) )
@ -3452,7 +3460,7 @@ static void gc_delete_reader (struct gcreq *gcreq)
#endif #endif
if (rd->rhc) if (rd->rhc)
{ {
rhc_free (rd->rhc); ddsi_rhc_free (rd->rhc);
} }
if (rd->status_cb) if (rd->status_cb)
{ {
@ -3470,7 +3478,7 @@ static void gc_delete_reader (struct gcreq *gcreq)
ddsrt_free (rd); ddsrt_free (rd);
} }
dds_return_t delete_reader (struct q_globals *gv, const struct nn_guid *guid) dds_return_t delete_reader (struct q_globals *gv, const struct ddsi_guid *guid)
{ {
struct reader *rd; struct reader *rd;
assert (!is_writer_entityid (guid->entityid)); assert (!is_writer_entityid (guid->entityid));
@ -3533,10 +3541,10 @@ void proxy_participant_reassign_lease (struct proxy_participant *proxypp, struct
void new_proxy_participant void new_proxy_participant
( (
struct q_globals *gv, struct q_globals *gv,
const struct nn_guid *ppguid, const struct ddsi_guid *ppguid,
unsigned bes, unsigned bes,
unsigned prismtech_bes, unsigned prismtech_bes,
const struct nn_guid *privileged_pp_guid, const struct ddsi_guid *privileged_pp_guid,
struct addrset *as_default, struct addrset *as_default,
struct addrset *as_meta, struct addrset *as_meta,
const nn_plist_t *plist, const nn_plist_t *plist,
@ -3685,7 +3693,7 @@ void new_proxy_participant
const struct bestab *te = &bestab[i]; const struct bestab *te = &bestab[i];
if ((proxypp->bes & te->besflag) || (proxypp->prismtech_bes & te->prismtech_besflag)) if ((proxypp->bes & te->besflag) || (proxypp->prismtech_bes & te->prismtech_besflag))
{ {
nn_guid_t guid1; ddsi_guid_t guid1;
guid1.prefix = proxypp->e.guid.prefix; guid1.prefix = proxypp->e.guid.prefix;
guid1.entityid.u = te->entityid; guid1.entityid.u = te->entityid;
assert (is_builtin_entityid (guid1.entityid, proxypp->vendor)); assert (is_builtin_entityid (guid1.entityid, proxypp->vendor));
@ -3948,7 +3956,7 @@ void purge_proxy_participants (struct q_globals *gv, const nn_locator_t *loc, bo
thread_state_asleep (ts1); thread_state_asleep (ts1);
} }
int delete_proxy_participant_by_guid (struct q_globals *gv, const struct nn_guid *guid, nn_wctime_t timestamp, int isimplicit) int delete_proxy_participant_by_guid (struct q_globals *gv, const struct ddsi_guid *guid, nn_wctime_t timestamp, int isimplicit)
{ {
struct proxy_participant *ppt; struct proxy_participant *ppt;
@ -3971,7 +3979,7 @@ int delete_proxy_participant_by_guid (struct q_globals *gv, const struct nn_guid
return 0; return 0;
} }
uint64_t get_entity_instance_id (const struct q_globals *gv, const struct nn_guid *guid) uint64_t get_entity_instance_id (const struct q_globals *gv, const struct ddsi_guid *guid)
{ {
struct thread_state1 *ts1 = lookup_thread_state (); struct thread_state1 *ts1 = lookup_thread_state ();
struct entity_common *e; struct entity_common *e;
@ -3985,7 +3993,7 @@ uint64_t get_entity_instance_id (const struct q_globals *gv, const struct nn_gui
/* PROXY-ENDPOINT --------------------------------------------------- */ /* PROXY-ENDPOINT --------------------------------------------------- */
static void proxy_endpoint_common_init (struct entity_common *e, struct proxy_endpoint_common *c, enum entity_kind kind, const struct nn_guid *guid, nn_wctime_t tcreate, seqno_t seq, struct proxy_participant *proxypp, struct addrset *as, const nn_plist_t *plist) static void proxy_endpoint_common_init (struct entity_common *e, struct proxy_endpoint_common *c, enum entity_kind kind, const struct ddsi_guid *guid, nn_wctime_t tcreate, seqno_t seq, struct proxy_participant *proxypp, struct addrset *as, const nn_plist_t *plist)
{ {
const char *name; const char *name;
@ -4020,7 +4028,7 @@ static void proxy_endpoint_common_fini (struct entity_common *e, struct proxy_en
/* PROXY-WRITER ----------------------------------------------------- */ /* PROXY-WRITER ----------------------------------------------------- */
int new_proxy_writer (struct q_globals *gv, const struct nn_guid *ppguid, const struct nn_guid *guid, struct addrset *as, const nn_plist_t *plist, struct nn_dqueue *dqueue, struct xeventq *evq, nn_wctime_t timestamp, seqno_t seq) int new_proxy_writer (struct q_globals *gv, const struct ddsi_guid *ppguid, const struct ddsi_guid *guid, struct addrset *as, const nn_plist_t *plist, struct nn_dqueue *dqueue, struct xeventq *evq, nn_wctime_t timestamp, seqno_t seq)
{ {
struct proxy_participant *proxypp; struct proxy_participant *proxypp;
struct proxy_writer *pwr; struct proxy_writer *pwr;
@ -4153,7 +4161,7 @@ void update_proxy_writer (struct proxy_writer *pwr, seqno_t seq, struct addrset
void update_proxy_reader (struct proxy_reader *prd, seqno_t seq, struct addrset *as, const struct dds_qos *xqos, nn_wctime_t timestamp) void update_proxy_reader (struct proxy_reader *prd, seqno_t seq, struct addrset *as, const struct dds_qos *xqos, nn_wctime_t timestamp)
{ {
struct prd_wr_match * m; struct prd_wr_match * m;
nn_guid_t wrguid; ddsi_guid_t wrguid;
memset (&wrguid, 0, sizeof (wrguid)); memset (&wrguid, 0, sizeof (wrguid));
@ -4174,7 +4182,7 @@ void update_proxy_reader (struct proxy_reader *prd, seqno_t seq, struct addrset
while ((m = ddsrt_avl_lookup_succ_eq (&prd_writers_treedef, &prd->writers, &wrguid)) != NULL) while ((m = ddsrt_avl_lookup_succ_eq (&prd_writers_treedef, &prd->writers, &wrguid)) != NULL)
{ {
struct prd_wr_match *next; struct prd_wr_match *next;
nn_guid_t guid_next; ddsi_guid_t guid_next;
struct writer * wr; struct writer * wr;
wrguid = m->wr_guid; wrguid = m->wr_guid;
@ -4229,7 +4237,7 @@ static void gc_delete_proxy_writer (struct gcreq *gcreq)
ddsrt_free (pwr); ddsrt_free (pwr);
} }
int delete_proxy_writer (struct q_globals *gv, const struct nn_guid *guid, nn_wctime_t timestamp, int isimplicit) int delete_proxy_writer (struct q_globals *gv, const struct ddsi_guid *guid, nn_wctime_t timestamp, int isimplicit)
{ {
struct proxy_writer *pwr; struct proxy_writer *pwr;
(void)isimplicit; (void)isimplicit;
@ -4256,7 +4264,7 @@ int delete_proxy_writer (struct q_globals *gv, const struct nn_guid *guid, nn_wc
/* PROXY-READER ----------------------------------------------------- */ /* PROXY-READER ----------------------------------------------------- */
int new_proxy_reader (struct q_globals *gv, const struct nn_guid *ppguid, const struct nn_guid *guid, struct addrset *as, const nn_plist_t *plist, nn_wctime_t timestamp, seqno_t seq int new_proxy_reader (struct q_globals *gv, const struct ddsi_guid *ppguid, const struct ddsi_guid *guid, struct addrset *as, const nn_plist_t *plist, nn_wctime_t timestamp, seqno_t seq
#ifdef DDSI_INCLUDE_SSM #ifdef DDSI_INCLUDE_SSM
, int favours_ssm , int favours_ssm
#endif #endif
@ -4298,7 +4306,7 @@ int new_proxy_reader (struct q_globals *gv, const struct nn_guid *ppguid, const
static void proxy_reader_set_delete_and_ack_all_messages (struct proxy_reader *prd) static void proxy_reader_set_delete_and_ack_all_messages (struct proxy_reader *prd)
{ {
nn_guid_t wrguid; ddsi_guid_t wrguid;
struct writer *wr; struct writer *wr;
struct prd_wr_match *m; struct prd_wr_match *m;
@ -4310,7 +4318,7 @@ static void proxy_reader_set_delete_and_ack_all_messages (struct proxy_reader *p
/* have to be careful walking the tree -- pretty is different, but /* have to be careful walking the tree -- pretty is different, but
I want to check this before I write a lookup_succ function. */ I want to check this before I write a lookup_succ function. */
struct prd_wr_match *m_a_next; struct prd_wr_match *m_a_next;
nn_guid_t wrguid_next; ddsi_guid_t wrguid_next;
wrguid = m->wr_guid; wrguid = m->wr_guid;
if ((m_a_next = ddsrt_avl_find_succ (&prd_writers_treedef, &prd->writers, m)) != NULL) if ((m_a_next = ddsrt_avl_find_succ (&prd_writers_treedef, &prd->writers, m)) != NULL)
wrguid_next = m_a_next->wr_guid; wrguid_next = m_a_next->wr_guid;
@ -4362,7 +4370,7 @@ static void gc_delete_proxy_reader (struct gcreq *gcreq)
ddsrt_free (prd); ddsrt_free (prd);
} }
int delete_proxy_reader (struct q_globals *gv, const struct nn_guid *guid, nn_wctime_t timestamp, int isimplicit) int delete_proxy_reader (struct q_globals *gv, const struct ddsi_guid *guid, nn_wctime_t timestamp, int isimplicit)
{ {
struct proxy_reader *prd; struct proxy_reader *prd;
(void)isimplicit; (void)isimplicit;

View file

@ -113,7 +113,7 @@ static void ephash_guid_remove (struct ephash *gh, struct entity_common *e)
assert (x); assert (x);
} }
void *ephash_lookup_guid_untyped (const struct ephash *gh, const struct nn_guid *guid) void *ephash_lookup_guid_untyped (const struct ephash *gh, const struct ddsi_guid *guid)
{ {
/* FIXME: could (now) require guid to be first in entity_common; entity_common already is first in entity */ /* FIXME: could (now) require guid to be first in entity_common; entity_common already is first in entity */
struct entity_common e; struct entity_common e;
@ -122,7 +122,7 @@ void *ephash_lookup_guid_untyped (const struct ephash *gh, const struct nn_guid
return ddsrt_chh_lookup (gh->hash, &e); return ddsrt_chh_lookup (gh->hash, &e);
} }
static void *ephash_lookup_guid_int (const struct ephash *gh, const struct nn_guid *guid, enum entity_kind kind) static void *ephash_lookup_guid_int (const struct ephash *gh, const struct ddsi_guid *guid, enum entity_kind kind)
{ {
struct entity_common *res; struct entity_common *res;
if ((res = ephash_lookup_guid_untyped (gh, guid)) != NULL && res->kind == kind) if ((res = ephash_lookup_guid_untyped (gh, guid)) != NULL && res->kind == kind)
@ -131,7 +131,7 @@ static void *ephash_lookup_guid_int (const struct ephash *gh, const struct nn_gu
return NULL; return NULL;
} }
void *ephash_lookup_guid (const struct ephash *gh, const struct nn_guid *guid, enum entity_kind kind) void *ephash_lookup_guid (const struct ephash *gh, const struct ddsi_guid *guid, enum entity_kind kind)
{ {
return ephash_lookup_guid_int (gh, guid, kind); return ephash_lookup_guid_int (gh, guid, kind);
} }
@ -196,42 +196,42 @@ void ephash_remove_proxy_reader_guid (struct ephash *gh, struct proxy_reader *pr
ephash_guid_remove (gh, &prd->e); ephash_guid_remove (gh, &prd->e);
} }
struct participant *ephash_lookup_participant_guid (const struct ephash *gh, const struct nn_guid *guid) struct participant *ephash_lookup_participant_guid (const struct ephash *gh, const struct ddsi_guid *guid)
{ {
assert (guid->entityid.u == NN_ENTITYID_PARTICIPANT); assert (guid->entityid.u == NN_ENTITYID_PARTICIPANT);
assert (offsetof (struct participant, e) == 0); assert (offsetof (struct participant, e) == 0);
return ephash_lookup_guid_int (gh, guid, EK_PARTICIPANT); return ephash_lookup_guid_int (gh, guid, EK_PARTICIPANT);
} }
struct proxy_participant *ephash_lookup_proxy_participant_guid (const struct ephash *gh, const struct nn_guid *guid) struct proxy_participant *ephash_lookup_proxy_participant_guid (const struct ephash *gh, const struct ddsi_guid *guid)
{ {
assert (guid->entityid.u == NN_ENTITYID_PARTICIPANT); assert (guid->entityid.u == NN_ENTITYID_PARTICIPANT);
assert (offsetof (struct proxy_participant, e) == 0); assert (offsetof (struct proxy_participant, e) == 0);
return ephash_lookup_guid_int (gh, guid, EK_PROXY_PARTICIPANT); return ephash_lookup_guid_int (gh, guid, EK_PROXY_PARTICIPANT);
} }
struct writer *ephash_lookup_writer_guid (const struct ephash *gh, const struct nn_guid *guid) struct writer *ephash_lookup_writer_guid (const struct ephash *gh, const struct ddsi_guid *guid)
{ {
assert (is_writer_entityid (guid->entityid)); assert (is_writer_entityid (guid->entityid));
assert (offsetof (struct writer, e) == 0); assert (offsetof (struct writer, e) == 0);
return ephash_lookup_guid_int (gh, guid, EK_WRITER); return ephash_lookup_guid_int (gh, guid, EK_WRITER);
} }
struct reader *ephash_lookup_reader_guid (const struct ephash *gh, const struct nn_guid *guid) struct reader *ephash_lookup_reader_guid (const struct ephash *gh, const struct ddsi_guid *guid)
{ {
assert (is_reader_entityid (guid->entityid)); assert (is_reader_entityid (guid->entityid));
assert (offsetof (struct reader, e) == 0); assert (offsetof (struct reader, e) == 0);
return ephash_lookup_guid_int (gh, guid, EK_READER); return ephash_lookup_guid_int (gh, guid, EK_READER);
} }
struct proxy_writer *ephash_lookup_proxy_writer_guid (const struct ephash *gh, const struct nn_guid *guid) struct proxy_writer *ephash_lookup_proxy_writer_guid (const struct ephash *gh, const struct ddsi_guid *guid)
{ {
assert (is_writer_entityid (guid->entityid)); assert (is_writer_entityid (guid->entityid));
assert (offsetof (struct proxy_writer, e) == 0); assert (offsetof (struct proxy_writer, e) == 0);
return ephash_lookup_guid_int (gh, guid, EK_PROXY_WRITER); return ephash_lookup_guid_int (gh, guid, EK_PROXY_WRITER);
} }
struct proxy_reader *ephash_lookup_proxy_reader_guid (const struct ephash *gh, const struct nn_guid *guid) struct proxy_reader *ephash_lookup_proxy_reader_guid (const struct ephash *gh, const struct ddsi_guid *guid)
{ {
assert (is_reader_entityid (guid->entityid)); assert (is_reader_entityid (guid->entityid));
assert (offsetof (struct proxy_reader, e) == 0); assert (offsetof (struct proxy_reader, e) == 0);

View file

@ -188,7 +188,7 @@ int64_t check_and_handle_lease_expiration (struct q_globals *gv, nn_etime_t tnow
ddsrt_mutex_lock (&gv->leaseheap_lock); ddsrt_mutex_lock (&gv->leaseheap_lock);
while ((l = ddsrt_fibheap_min (&lease_fhdef, &gv->leaseheap)) != NULL && l->tsched.v <= tnowE.v) while ((l = ddsrt_fibheap_min (&lease_fhdef, &gv->leaseheap)) != NULL && l->tsched.v <= tnowE.v)
{ {
nn_guid_t g = l->entity->guid; ddsi_guid_t g = l->entity->guid;
enum entity_kind k = l->entity->kind; enum entity_kind k = l->entity->kind;
assert (l->tsched.v != TSCHED_NOT_ON_HEAP); assert (l->tsched.v != TSCHED_NOT_ON_HEAP);
@ -303,7 +303,7 @@ void handle_PMD (const struct receiver_state *rst, nn_wctime_t timestamp, uint32
const struct CDRHeader *data = vdata; /* built-ins not deserialized (yet) */ const struct CDRHeader *data = vdata; /* built-ins not deserialized (yet) */
const int bswap = (data->identifier == CDR_LE) ^ (DDSRT_ENDIAN == DDSRT_LITTLE_ENDIAN); const int bswap = (data->identifier == CDR_LE) ^ (DDSRT_ENDIAN == DDSRT_LITTLE_ENDIAN);
struct proxy_participant *pp; struct proxy_participant *pp;
nn_guid_t ppguid; ddsi_guid_t ppguid;
RSTTRACE (" PMD ST%x", statusinfo); RSTTRACE (" PMD ST%x", statusinfo);
if (data->identifier != CDR_LE && data->identifier != CDR_BE) if (data->identifier != CDR_LE && data->identifier != CDR_BE)
{ {
@ -318,7 +318,7 @@ void handle_PMD (const struct receiver_state *rst, nn_wctime_t timestamp, uint32
else else
{ {
const ParticipantMessageData_t *pmd = (ParticipantMessageData_t *) (data + 1); const ParticipantMessageData_t *pmd = (ParticipantMessageData_t *) (data + 1);
nn_guid_prefix_t p = nn_ntoh_guid_prefix (pmd->participantGuidPrefix); ddsi_guid_prefix_t p = nn_ntoh_guid_prefix (pmd->participantGuidPrefix);
uint32_t kind = ntohl (pmd->kind); uint32_t kind = ntohl (pmd->kind);
uint32_t length = bswap ? bswap4u (pmd->length) : pmd->length; uint32_t length = bswap ? bswap4u (pmd->length) : pmd->length;
RSTTRACE (" pp %"PRIx32":%"PRIx32":%"PRIx32" kind %u data %u", p.u[0], p.u[1], p.u[2], kind, length); RSTTRACE (" pp %"PRIx32":%"PRIx32":%"PRIx32" kind %u data %u", p.u[0], p.u[1], p.u[2], kind, length);
@ -346,11 +346,11 @@ void handle_PMD (const struct receiver_state *rst, nn_wctime_t timestamp, uint32
case NN_STATUSINFO_DISPOSE | NN_STATUSINFO_UNREGISTER: case NN_STATUSINFO_DISPOSE | NN_STATUSINFO_UNREGISTER:
/* Serialized key; BE or LE doesn't matter as both fields are /* Serialized key; BE or LE doesn't matter as both fields are
defined as octets. */ defined as octets. */
if (len < sizeof (struct CDRHeader) + sizeof (nn_guid_prefix_t)) if (len < sizeof (struct CDRHeader) + sizeof (ddsi_guid_prefix_t))
debug_print_rawdata (rst->gv, " SHORT3", data, len); debug_print_rawdata (rst->gv, " SHORT3", data, len);
else else
{ {
ppguid.prefix = nn_ntoh_guid_prefix (*((nn_guid_prefix_t *) (data + 1))); ppguid.prefix = nn_ntoh_guid_prefix (*((ddsi_guid_prefix_t *) (data + 1)));
ppguid.entityid.u = NN_ENTITYID_PARTICIPANT; ppguid.entityid.u = NN_ENTITYID_PARTICIPANT;
if (delete_proxy_participant_by_guid (rst->gv, &ppguid, timestamp, 0) < 0) if (delete_proxy_participant_by_guid (rst->gv, &ppguid, timestamp, 0) < 0)
RSTTRACE (" unknown"); RSTTRACE (" unknown");

View file

@ -353,7 +353,7 @@ static void fini_generic_partial (void * __restrict dst, size_t * __restrict dst
case Xo: case Xox2: SIMPLE (Xo, unsigned char); break; case Xo: case Xox2: SIMPLE (Xo, unsigned char); break;
case Xb: case Xbx2: SIMPLE (Xb, unsigned char); break; case Xb: case Xbx2: SIMPLE (Xb, unsigned char); break;
case XbCOND: SIMPLE (XbCOND, unsigned char); break; case XbCOND: SIMPLE (XbCOND, unsigned char); break;
case XG: SIMPLE (XG, nn_guid_t); break; case XG: SIMPLE (XG, ddsi_guid_t); break;
case XK: SIMPLE (XK, nn_keyhash_t); break; case XK: SIMPLE (XK, nn_keyhash_t); break;
} }
desc++; desc++;
@ -492,7 +492,7 @@ static dds_return_t deser_generic (void * __restrict dst, size_t * __restrict ds
break; break;
} }
case XG: { /* GUID */ case XG: { /* GUID */
nn_guid_t * const x = deser_generic_dst (dst, dstoff, alignof (nn_guid_t)); ddsi_guid_t * const x = deser_generic_dst (dst, dstoff, alignof (ddsi_guid_t));
if (dd->bufsz - *srcoff < sizeof (*x)) if (dd->bufsz - *srcoff < sizeof (*x))
goto fail; goto fail;
memcpy (x, dd->buf + *srcoff, sizeof (*x)); memcpy (x, dd->buf + *srcoff, sizeof (*x));
@ -552,7 +552,7 @@ static size_t ser_generic_size (const void *src, size_t srcoff, const enum psero
case Xo: case Xox2: SIMPLE1 (Xo, unsigned char); break; case Xo: case Xox2: SIMPLE1 (Xo, unsigned char); break;
case Xb: case Xbx2: SIMPLE1 (Xb, unsigned char); break; case Xb: case Xbx2: SIMPLE1 (Xb, unsigned char); break;
case XbCOND: SIMPLE1 (XbCOND, unsigned char); break; case XbCOND: SIMPLE1 (XbCOND, unsigned char); break;
case XG: SIMPLE1 (XG, nn_guid_t); break; case XG: SIMPLE1 (XG, ddsi_guid_t); break;
case XK: SIMPLE1 (XK, nn_keyhash_t); break; case XK: SIMPLE1 (XK, nn_keyhash_t); break;
} }
desc++; desc++;
@ -679,8 +679,8 @@ static dds_return_t ser_generic (struct nn_xmsg *xmsg, nn_parameterid_t pid, con
break; break;
} }
case XG: { /* GUID */ case XG: { /* GUID */
nn_guid_t const * const x = deser_generic_src (src, &srcoff, alignof (nn_guid_t)); ddsi_guid_t const * const x = deser_generic_src (src, &srcoff, alignof (ddsi_guid_t));
const nn_guid_t xn = nn_hton_guid (*x); const ddsi_guid_t xn = nn_hton_guid (*x);
char * const p = data + dstoff; char * const p = data + dstoff;
memcpy (p, &xn, sizeof (xn)); memcpy (p, &xn, sizeof (xn));
dstoff += sizeof (xn); dstoff += sizeof (xn);
@ -730,7 +730,7 @@ static dds_return_t unalias_generic (void * __restrict dst, size_t * __restrict
case Xo: case Xox2: SIMPLE (Xo, unsigned char); break; case Xo: case Xox2: SIMPLE (Xo, unsigned char); break;
case Xb: case Xbx2: SIMPLE (Xb, unsigned char); break; case Xb: case Xbx2: SIMPLE (Xb, unsigned char); break;
case XbCOND: SIMPLE (XbCOND, unsigned char); break; case XbCOND: SIMPLE (XbCOND, unsigned char); break;
case XG: SIMPLE (XG, nn_guid_t); break; case XG: SIMPLE (XG, ddsi_guid_t); break;
case XK: SIMPLE (XK, nn_keyhash_t); break; case XK: SIMPLE (XK, nn_keyhash_t); break;
} }
desc++; desc++;
@ -798,7 +798,7 @@ static dds_return_t valid_generic (const void *src, size_t srcoff, const enum ps
case Xo: case Xox2: TRIVIAL (Xo, unsigned char); break; case Xo: case Xox2: TRIVIAL (Xo, unsigned char); break;
case Xb: case Xbx2: SIMPLE (Xb, unsigned char, *x == 0 || *x == 1); break; case Xb: case Xbx2: SIMPLE (Xb, unsigned char, *x == 0 || *x == 1); break;
case XbCOND: SIMPLE (XbCOND, unsigned char, *x == 0 || *x == 1); break; case XbCOND: SIMPLE (XbCOND, unsigned char, *x == 0 || *x == 1); break;
case XG: TRIVIAL (XG, nn_guid_t); break; case XG: TRIVIAL (XG, ddsi_guid_t); break;
case XK: TRIVIAL (XK, nn_keyhash_t); break; case XK: TRIVIAL (XK, nn_keyhash_t); break;
} }
desc++; desc++;
@ -857,7 +857,7 @@ static bool equal_generic (const void *srcx, const void *srcy, size_t srcoff, co
return true; return true;
}); });
break; break;
case XG: SIMPLE (XG, nn_guid_t, memcmp (x, y, sizeof (*x))); break; case XG: SIMPLE (XG, ddsi_guid_t, memcmp (x, y, sizeof (*x))); break;
case XK: SIMPLE (XK, nn_keyhash_t, memcmp (x, y, sizeof (*x))); break; case XK: SIMPLE (XK, nn_keyhash_t, memcmp (x, y, sizeof (*x))); break;
} }
desc++; desc++;
@ -904,7 +904,7 @@ static dds_return_t dvx_resource_limits (void * __restrict dst, const struct dd
static dds_return_t dvx_participant_guid (void * __restrict dst, const struct dd * __restrict dd) static dds_return_t dvx_participant_guid (void * __restrict dst, const struct dd * __restrict dd)
{ {
const nn_guid_t *g = dst; const ddsi_guid_t *g = dst;
(void) dd; (void) dd;
if (g->prefix.u[0] == 0 && g->prefix.u[1] == 0 && g->prefix.u[2] == 0) if (g->prefix.u[0] == 0 && g->prefix.u[1] == 0 && g->prefix.u[2] == 0)
return (g->entityid.u == 0) ? 0 : DDS_RETCODE_BAD_PARAMETER; return (g->entityid.u == 0) ? 0 : DDS_RETCODE_BAD_PARAMETER;
@ -914,7 +914,7 @@ static dds_return_t dvx_participant_guid (void * __restrict dst, const struct dd
static dds_return_t dvx_group_guid (void * __restrict dst, const struct dd * __restrict dd) static dds_return_t dvx_group_guid (void * __restrict dst, const struct dd * __restrict dd)
{ {
const nn_guid_t *g = dst; const ddsi_guid_t *g = dst;
(void) dd; (void) dd;
if (g->prefix.u[0] == 0 && g->prefix.u[1] == 0 && g->prefix.u[2] == 0) if (g->prefix.u[0] == 0 && g->prefix.u[1] == 0 && g->prefix.u[2] == 0)
return (g->entityid.u == 0) ? 0 : DDS_RETCODE_BAD_PARAMETER; return (g->entityid.u == 0) ? 0 : DDS_RETCODE_BAD_PARAMETER;
@ -924,7 +924,7 @@ static dds_return_t dvx_group_guid (void * __restrict dst, const struct dd * __r
static dds_return_t dvx_endpoint_guid (void * __restrict dst, const struct dd * __restrict dd) static dds_return_t dvx_endpoint_guid (void * __restrict dst, const struct dd * __restrict dd)
{ {
nn_guid_t *g = dst; ddsi_guid_t *g = dst;
if (g->prefix.u[0] == 0 && g->prefix.u[1] == 0 && g->prefix.u[2] == 0) if (g->prefix.u[0] == 0 && g->prefix.u[1] == 0 && g->prefix.u[2] == 0)
return (g->entityid.u == 0) ? 0 : DDS_RETCODE_BAD_PARAMETER; return (g->entityid.u == 0) ? 0 : DDS_RETCODE_BAD_PARAMETER;
switch (g->entityid.u & NN_ENTITYID_KIND_MASK) switch (g->entityid.u & NN_ENTITYID_KIND_MASK)

View file

@ -2407,7 +2407,7 @@ struct nn_dqueue_bubble {
void *arg; void *arg;
} cb; } cb;
struct { struct {
nn_guid_t rdguid; ddsi_guid_t rdguid;
uint32_t count; uint32_t count;
} rdguid; } rdguid;
} u; } u;
@ -2429,7 +2429,7 @@ static uint32_t dqueue_thread (struct nn_dqueue *q)
struct q_globals const * const gv = ddsrt_atomic_ldvoidp (&ts1->gv); struct q_globals const * const gv = ddsrt_atomic_ldvoidp (&ts1->gv);
nn_mtime_t next_thread_cputime = { 0 }; nn_mtime_t next_thread_cputime = { 0 };
int keepgoing = 1; int keepgoing = 1;
nn_guid_t rdguid, *prdguid = NULL; ddsi_guid_t rdguid, *prdguid = NULL;
uint32_t rdguid_count = 0; uint32_t rdguid_count = 0;
ddsrt_mutex_lock (&q->lock); ddsrt_mutex_lock (&q->lock);
@ -2631,7 +2631,7 @@ void nn_dqueue_enqueue_callback (struct nn_dqueue *q, nn_dqueue_callback_t cb, v
nn_dqueue_enqueue_bubble (q, b); nn_dqueue_enqueue_bubble (q, b);
} }
void nn_dqueue_enqueue1 (struct nn_dqueue *q, const nn_guid_t *rdguid, struct nn_rsample_chain *sc, nn_reorder_result_t rres) void nn_dqueue_enqueue1 (struct nn_dqueue *q, const ddsi_guid_t *rdguid, struct nn_rsample_chain *sc, nn_reorder_result_t rres)
{ {
struct nn_dqueue_bubble *b; struct nn_dqueue_bubble *b;

View file

@ -44,7 +44,7 @@
#include "dds/ddsi/q_entity.h" #include "dds/ddsi/q_entity.h"
#include "dds/ddsi/q_xmsg.h" #include "dds/ddsi/q_xmsg.h"
#include "dds/ddsi/q_receive.h" #include "dds/ddsi/q_receive.h"
#include "dds/ddsi/q_rhc.h" #include "dds/ddsi/ddsi_rhc.h"
#include "dds/ddsi/q_transmit.h" #include "dds/ddsi/q_transmit.h"
#include "dds/ddsi/q_globals.h" #include "dds/ddsi/q_globals.h"
@ -74,7 +74,7 @@ Notes:
*/ */
static void deliver_user_data_synchronously (struct nn_rsample_chain *sc, const nn_guid_t *rdguid); static void deliver_user_data_synchronously (struct nn_rsample_chain *sc, const ddsi_guid_t *rdguid);
static void maybe_set_reader_in_sync (struct proxy_writer *pwr, struct pwr_rd_match *wn, seqno_t last_deliv_seq) static void maybe_set_reader_in_sync (struct proxy_writer *pwr, struct pwr_rd_match *wn, seqno_t last_deliv_seq)
{ {
@ -285,7 +285,7 @@ static int valid_NackFrag (NackFrag_t *msg, size_t size, int byteswap)
return 1; return 1;
} }
static void set_sampleinfo_proxy_writer (struct nn_rsample_info *sampleinfo, nn_guid_t *pwr_guid) static void set_sampleinfo_proxy_writer (struct nn_rsample_info *sampleinfo, ddsi_guid_t *pwr_guid)
{ {
struct proxy_writer * pwr = ephash_lookup_proxy_writer_guid (sampleinfo->rst->gv->guid_hash, pwr_guid); struct proxy_writer * pwr = ephash_lookup_proxy_writer_guid (sampleinfo->rst->gv->guid_hash, pwr_guid);
sampleinfo->pwr = pwr; sampleinfo->pwr = pwr;
@ -294,7 +294,7 @@ static void set_sampleinfo_proxy_writer (struct nn_rsample_info *sampleinfo, nn_
static int valid_Data (const struct receiver_state *rst, struct nn_rmsg *rmsg, Data_t *msg, size_t size, int byteswap, struct nn_rsample_info *sampleinfo, unsigned char **payloadp) static int valid_Data (const struct receiver_state *rst, struct nn_rmsg *rmsg, Data_t *msg, size_t size, int byteswap, struct nn_rsample_info *sampleinfo, unsigned char **payloadp)
{ {
/* on success: sampleinfo->{seq,rst,statusinfo,pt_wr_info_zoff,bswap,complex_qos} all set */ /* on success: sampleinfo->{seq,rst,statusinfo,pt_wr_info_zoff,bswap,complex_qos} all set */
nn_guid_t pwr_guid; ddsi_guid_t pwr_guid;
unsigned char *ptr; unsigned char *ptr;
if (size < sizeof (*msg)) if (size < sizeof (*msg))
@ -405,7 +405,7 @@ static int valid_DataFrag (const struct receiver_state *rst, struct nn_rmsg *rms
{ {
/* on success: sampleinfo->{rst,statusinfo,pt_wr_info_zoff,bswap,complex_qos} all set */ /* on success: sampleinfo->{rst,statusinfo,pt_wr_info_zoff,bswap,complex_qos} all set */
uint32_t payloadsz; uint32_t payloadsz;
nn_guid_t pwr_guid; ddsi_guid_t pwr_guid;
unsigned char *ptr; unsigned char *ptr;
if (size < sizeof (*msg)) if (size < sizeof (*msg))
@ -628,7 +628,7 @@ static int handle_AckNack (struct receiver_state *rst, nn_etime_t tnow, const Ac
struct proxy_reader *prd; struct proxy_reader *prd;
struct wr_prd_match *rn; struct wr_prd_match *rn;
struct writer *wr; struct writer *wr;
nn_guid_t src, dst; ddsi_guid_t src, dst;
seqno_t seqbase; seqno_t seqbase;
seqno_t seq_xmit; seqno_t seq_xmit;
nn_count_t *countp; nn_count_t *countp;
@ -991,7 +991,7 @@ static int handle_AckNack (struct receiver_state *rst, nn_etime_t tnow, const Ac
return 1; return 1;
} }
static void handle_forall_destinations (const nn_guid_t *dst, struct proxy_writer *pwr, ddsrt_avl_walk_t fun, void *arg) static void handle_forall_destinations (const ddsi_guid_t *dst, struct proxy_writer *pwr, ddsrt_avl_walk_t fun, void *arg)
{ {
/* prefix: id: to: /* prefix: id: to:
0 0 all matched readers 0 0 all matched readers
@ -1023,7 +1023,7 @@ static void handle_forall_destinations (const nn_guid_t *dst, struct proxy_write
break; break;
case (1 << 1) | 0: /* all within one participant: walk a range of keyvalues */ case (1 << 1) | 0: /* all within one participant: walk a range of keyvalues */
{ {
nn_guid_t a, b; ddsi_guid_t a, b;
a = *dst; a.entityid.u = 0; a = *dst; a.entityid.u = 0;
b = *dst; b.entityid.u = ~0u; b = *dst; b.entityid.u = ~0u;
ddsrt_avl_walk_range (&pwr_readers_treedef, &pwr->readers, &a, &b, fun, arg); ddsrt_avl_walk_range (&pwr_readers_treedef, &pwr->readers, &a, &b, fun, arg);
@ -1124,7 +1124,7 @@ static int handle_Heartbeat (struct receiver_state *rst, nn_etime_t tnow, struct
const seqno_t lastseq = fromSN (msg->lastSN); const seqno_t lastseq = fromSN (msg->lastSN);
struct handle_Heartbeat_helper_arg arg; struct handle_Heartbeat_helper_arg arg;
struct proxy_writer *pwr; struct proxy_writer *pwr;
nn_guid_t src, dst; ddsi_guid_t src, dst;
src.prefix = rst->src_guid_prefix; src.prefix = rst->src_guid_prefix;
src.entityid = msg->writerId; src.entityid = msg->writerId;
@ -1261,7 +1261,7 @@ static int handle_HeartbeatFrag (struct receiver_state *rst, UNUSED_ARG(nn_etime
{ {
const seqno_t seq = fromSN (msg->writerSN); const seqno_t seq = fromSN (msg->writerSN);
const nn_fragment_number_t fragnum = msg->lastFragmentNum - 1; /* we do 0-based */ const nn_fragment_number_t fragnum = msg->lastFragmentNum - 1; /* we do 0-based */
nn_guid_t src, dst; ddsi_guid_t src, dst;
struct proxy_writer *pwr; struct proxy_writer *pwr;
src.prefix = rst->src_guid_prefix; src.prefix = rst->src_guid_prefix;
@ -1374,7 +1374,7 @@ static int handle_NackFrag (struct receiver_state *rst, nn_etime_t tnow, const N
struct wr_prd_match *rn; struct wr_prd_match *rn;
struct writer *wr; struct writer *wr;
struct whc_borrowed_sample sample; struct whc_borrowed_sample sample;
nn_guid_t src, dst; ddsi_guid_t src, dst;
nn_count_t *countp; nn_count_t *countp;
seqno_t seq = fromSN (msg->writerSN); seqno_t seq = fromSN (msg->writerSN);
@ -1490,7 +1490,7 @@ static int handle_NackFrag (struct receiver_state *rst, nn_etime_t tnow, const N
return 1; return 1;
} }
static int handle_InfoDST (struct receiver_state *rst, const InfoDST_t *msg, const nn_guid_prefix_t *dst_prefix) static int handle_InfoDST (struct receiver_state *rst, const InfoDST_t *msg, const ddsi_guid_prefix_t *dst_prefix)
{ {
rst->dst_guid_prefix = nn_ntoh_guid_prefix (msg->guid_prefix); rst->dst_guid_prefix = nn_ntoh_guid_prefix (msg->guid_prefix);
RSTTRACE ("INFODST(%"PRIx32":%"PRIx32":%"PRIx32")", PGUIDPREFIX (rst->dst_guid_prefix)); RSTTRACE ("INFODST(%"PRIx32":%"PRIx32":%"PRIx32")", PGUIDPREFIX (rst->dst_guid_prefix));
@ -1502,7 +1502,7 @@ static int handle_InfoDST (struct receiver_state *rst, const InfoDST_t *msg, con
} }
else else
{ {
nn_guid_t dst; ddsi_guid_t dst;
dst.prefix = rst->dst_guid_prefix; dst.prefix = rst->dst_guid_prefix;
dst.entityid = to_entityid(NN_ENTITYID_PARTICIPANT); dst.entityid = to_entityid(NN_ENTITYID_PARTICIPANT);
rst->forme = (ephash_lookup_participant_guid (rst->gv->guid_hash, &dst) != NULL || rst->forme = (ephash_lookup_participant_guid (rst->gv->guid_hash, &dst) != NULL ||
@ -1623,7 +1623,7 @@ static int handle_Gap (struct receiver_state *rst, nn_etime_t tnow, struct nn_rm
struct proxy_writer *pwr; struct proxy_writer *pwr;
struct pwr_rd_match *wn; struct pwr_rd_match *wn;
nn_guid_t src, dst; ddsi_guid_t src, dst;
seqno_t gapstart, listbase; seqno_t gapstart, listbase;
int32_t last_included_rel; int32_t last_included_rel;
uint32_t listidx; uint32_t listidx;
@ -1750,7 +1750,7 @@ static struct ddsi_serdata *new_sample_from_data (struct ddsi_tkmap_instance **t
if (!(data_smhdr_flags & DATA_FLAG_DATAFLAG) || sampleinfo->size == 0) if (!(data_smhdr_flags & DATA_FLAG_DATAFLAG) || sampleinfo->size == 0)
{ {
const struct proxy_writer *pwr = sampleinfo->pwr; const struct proxy_writer *pwr = sampleinfo->pwr;
nn_guid_t guid; ddsi_guid_t guid;
/* pwr can't currently be null, but that might change some day, and this being /* pwr can't currently be null, but that might change some day, and this being
an error path, it doesn't hurt to survive that */ an error path, it doesn't hurt to survive that */
if (pwr) guid = pwr->e.guid; else memset (&guid, 0, sizeof (guid)); if (pwr) guid = pwr->e.guid; else memset (&guid, 0, sizeof (guid));
@ -1802,7 +1802,7 @@ static struct ddsi_serdata *new_sample_from_data (struct ddsi_tkmap_instance **t
{ {
/* No message => error out */ /* No message => error out */
const struct proxy_writer *pwr = sampleinfo->pwr; const struct proxy_writer *pwr = sampleinfo->pwr;
nn_guid_t guid; ddsi_guid_t guid;
if (pwr) guid = pwr->e.guid; else memset (&guid, 0, sizeof (guid)); if (pwr) guid = pwr->e.guid; else memset (&guid, 0, sizeof (guid));
DDS_CWARNING (&gv->logconfig, DDS_CWARNING (&gv->logconfig,
"data(application, vendor %u.%u): "PGUIDFMT" #%"PRId64": deserialization %s/%s failed (%s)\n", "data(application, vendor %u.%u): "PGUIDFMT" #%"PRId64": deserialization %s/%s failed (%s)\n",
@ -1821,7 +1821,7 @@ static struct ddsi_serdata *new_sample_from_data (struct ddsi_tkmap_instance **t
else if (gv->logconfig.c.mask & DDS_LC_TRACE) else if (gv->logconfig.c.mask & DDS_LC_TRACE)
{ {
const struct proxy_writer *pwr = sampleinfo->pwr; const struct proxy_writer *pwr = sampleinfo->pwr;
nn_guid_t guid; ddsi_guid_t guid;
char tmp[1024]; char tmp[1024];
size_t res = 0; size_t res = 0;
tmp[0] = 0; tmp[0] = 0;
@ -1884,7 +1884,7 @@ static struct reader *proxy_writer_next_in_sync_reader (struct proxy_writer *pwr
return NULL; return NULL;
} }
static int deliver_user_data (const struct nn_rsample_info *sampleinfo, const struct nn_rdata *fragchain, const nn_guid_t *rdguid, int pwr_locked) static int deliver_user_data (const struct nn_rsample_info *sampleinfo, const struct nn_rdata *fragchain, const ddsi_guid_t *rdguid, int pwr_locked)
{ {
struct receiver_state const * const rst = sampleinfo->rst; struct receiver_state const * const rst = sampleinfo->rst;
struct q_globals * const gv = rst->gv; struct q_globals * const gv = rst->gv;
@ -1956,8 +1956,8 @@ static int deliver_user_data (const struct nn_rsample_info *sampleinfo, const st
/* FIXME: should it be 0, local wall clock time or INVALID? */ /* FIXME: should it be 0, local wall clock time or INVALID? */
const nn_wctime_t tstamp = (sampleinfo->timestamp.v != NN_WCTIME_INVALID.v) ? sampleinfo->timestamp : ((nn_wctime_t) {0}); const nn_wctime_t tstamp = (sampleinfo->timestamp.v != NN_WCTIME_INVALID.v) ? sampleinfo->timestamp : ((nn_wctime_t) {0});
struct proxy_writer_info pwr_info; struct ddsi_writer_info wrinfo;
make_proxy_writer_info (&pwr_info, &pwr->e, pwr->c.xqos); ddsi_make_writer_info (&wrinfo, &pwr->e, pwr->c.xqos);
if (rdguid == NULL) if (rdguid == NULL)
{ {
@ -1978,7 +1978,7 @@ static int deliver_user_data (const struct nn_rsample_info *sampleinfo, const st
ETRACE (pwr, " => EVERYONE\n"); ETRACE (pwr, " => EVERYONE\n");
uint32_t i = 0; uint32_t i = 0;
do { do {
if (!rhc_store (rdary[i]->rhc, &pwr_info, payload, tk)) if (!ddsi_rhc_store (rdary[i]->rhc, &wrinfo, payload, tk))
{ {
if (pwr_locked) ddsrt_mutex_unlock (&pwr->e.lock); if (pwr_locked) ddsrt_mutex_unlock (&pwr->e.lock);
ddsrt_mutex_unlock (&pwr->rdary.rdary_lock); ddsrt_mutex_unlock (&pwr->rdary.rdary_lock);
@ -2020,7 +2020,7 @@ static int deliver_user_data (const struct nn_rsample_info *sampleinfo, const st
ETRACE (pwr, " =>"); ETRACE (pwr, " =>");
do { do {
ETRACE (pwr, " "PGUIDFMT, PGUID (rd->e.guid)); ETRACE (pwr, " "PGUIDFMT, PGUID (rd->e.guid));
(void) rhc_store (rd->rhc, &pwr_info, payload, tk); (void) ddsi_rhc_store (rd->rhc, &wrinfo, payload, tk);
rd = proxy_writer_next_in_sync_reader (pwr, &it); rd = proxy_writer_next_in_sync_reader (pwr, &it);
} while (rd != NULL); } while (rd != NULL);
free_sample_after_store (gv, payload, tk); free_sample_after_store (gv, payload, tk);
@ -2045,7 +2045,7 @@ static int deliver_user_data (const struct nn_rsample_info *sampleinfo, const st
/* FIXME: why look up rd,pwr again? Their states remains valid while the thread stays /* FIXME: why look up rd,pwr again? Their states remains valid while the thread stays
"awake" (although a delete can be initiated), and blocking like this is a stopgap "awake" (although a delete can be initiated), and blocking like this is a stopgap
anyway -- quite possibly to abort once either is deleted */ anyway -- quite possibly to abort once either is deleted */
while (!rhc_store (rd->rhc, &pwr_info, payload, tk)) while (!ddsi_rhc_store (rd->rhc, &wrinfo, payload, tk))
{ {
if (pwr_locked) ddsrt_mutex_unlock (&pwr->e.lock); if (pwr_locked) ddsrt_mutex_unlock (&pwr->e.lock);
dds_sleepfor (DDS_MSECS (1)); dds_sleepfor (DDS_MSECS (1));
@ -2065,14 +2065,14 @@ static int deliver_user_data (const struct nn_rsample_info *sampleinfo, const st
return 0; return 0;
} }
int user_dqueue_handler (const struct nn_rsample_info *sampleinfo, const struct nn_rdata *fragchain, const nn_guid_t *rdguid, UNUSED_ARG (void *qarg)) int user_dqueue_handler (const struct nn_rsample_info *sampleinfo, const struct nn_rdata *fragchain, const ddsi_guid_t *rdguid, UNUSED_ARG (void *qarg))
{ {
int res; int res;
res = deliver_user_data (sampleinfo, fragchain, rdguid, 0); res = deliver_user_data (sampleinfo, fragchain, rdguid, 0);
return res; return res;
} }
static void deliver_user_data_synchronously (struct nn_rsample_chain *sc, const nn_guid_t *rdguid) static void deliver_user_data_synchronously (struct nn_rsample_chain *sc, const ddsi_guid_t *rdguid)
{ {
while (sc->first) while (sc->first)
{ {
@ -2113,7 +2113,7 @@ static void handle_regular (struct receiver_state *rst, nn_etime_t tnow, struct
{ {
struct proxy_writer *pwr; struct proxy_writer *pwr;
struct nn_rsample *rsample; struct nn_rsample *rsample;
nn_guid_t dst; ddsi_guid_t dst;
dst.prefix = rst->dst_guid_prefix; dst.prefix = rst->dst_guid_prefix;
dst.entityid = msg->readerId; dst.entityid = msg->readerId;
@ -2121,7 +2121,7 @@ static void handle_regular (struct receiver_state *rst, nn_etime_t tnow, struct
pwr = sampleinfo->pwr; pwr = sampleinfo->pwr;
if (pwr == NULL) if (pwr == NULL)
{ {
nn_guid_t src; ddsi_guid_t src;
src.prefix = rst->src_guid_prefix; src.prefix = rst->src_guid_prefix;
src.entityid = msg->writerId; src.entityid = msg->writerId;
RSTTRACE (" "PGUIDFMT"? -> "PGUIDFMT, PGUID (src), PGUID (dst)); RSTTRACE (" "PGUIDFMT"? -> "PGUIDFMT, PGUID (src), PGUID (dst));
@ -2333,7 +2333,7 @@ static void drop_oversize (struct receiver_state *rst, struct nn_rmsg *rmsg, con
effect seems a reasonable approach. */ effect seems a reasonable approach. */
int refc_adjust = 0; int refc_adjust = 0;
struct nn_rdata *gap = nn_rdata_newgap (rmsg); struct nn_rdata *gap = nn_rdata_newgap (rmsg);
nn_guid_t dst; ddsi_guid_t dst;
struct pwr_rd_match *wn; struct pwr_rd_match *wn;
int gap_was_valuable; int gap_was_valuable;
@ -2627,8 +2627,8 @@ static int handle_submsg_sequence
const nn_locator_t *srcloc, const nn_locator_t *srcloc,
nn_wctime_t tnowWC, nn_wctime_t tnowWC,
nn_etime_t tnowE, nn_etime_t tnowE,
const nn_guid_prefix_t * const src_prefix, const ddsi_guid_prefix_t * const src_prefix,
const nn_guid_prefix_t * const dst_prefix, const ddsi_guid_prefix_t * const dst_prefix,
unsigned char * const msg /* NOT const - we may byteswap it */, unsigned char * const msg /* NOT const - we may byteswap it */,
const size_t len, const size_t len,
unsigned char * submsg /* aliases somewhere in msg */, unsigned char * submsg /* aliases somewhere in msg */,
@ -2937,7 +2937,7 @@ malformed_asleep:
return -1; return -1;
} }
static bool do_packet (struct thread_state1 * const ts1, struct q_globals *gv, ddsi_tran_conn_t conn, const nn_guid_prefix_t *guidprefix, struct nn_rbufpool *rbpool) static bool do_packet (struct thread_state1 * const ts1, struct q_globals *gv, ddsi_tran_conn_t conn, const ddsi_guid_prefix_t *guidprefix, struct nn_rbufpool *rbpool)
{ {
/* UDP max packet size is 64kB */ /* UDP max packet size is 64kB */
@ -3057,7 +3057,7 @@ static bool do_packet (struct thread_state1 * const ts1, struct q_globals *gv, d
struct local_participant_desc struct local_participant_desc
{ {
ddsi_tran_conn_t m_conn; ddsi_tran_conn_t m_conn;
nn_guid_prefix_t guid_prefix; ddsi_guid_prefix_t guid_prefix;
}; };
static int local_participant_cmp (const void *va, const void *vb) static int local_participant_cmp (const void *va, const void *vb)
@ -3409,7 +3409,7 @@ uint32_t recv_thread (void *vrecv_thread_arg)
ddsi_tran_conn_t conn; ddsi_tran_conn_t conn;
while ((idx = os_sockWaitsetNextEvent (ctx, &conn)) >= 0) while ((idx = os_sockWaitsetNextEvent (ctx, &conn)) >= 0)
{ {
const nn_guid_prefix_t *guid_prefix; const ddsi_guid_prefix_t *guid_prefix;
if (((unsigned)idx < num_fixed) || gv->config.many_sockets_mode != MSM_MANY_UNICAST) if (((unsigned)idx < num_fixed) || gv->config.many_sockets_mode != MSM_MANY_UNICAST)
guid_prefix = NULL; guid_prefix = NULL;
else else

View file

@ -1,28 +0,0 @@
/*
* 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
*/
#include "dds/ddsi/q_rhc.h"
#include "dds/ddsi/q_xqos.h"
#include "dds/ddsi/q_entity.h"
extern inline void rhc_free (struct rhc *rhc);
extern inline bool rhc_store (struct rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info, struct ddsi_serdata * __restrict sample, struct ddsi_tkmap_instance * __restrict tk);
extern inline void rhc_unregister_wr (struct rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info);
extern inline void rhc_relinquish_ownership (struct rhc * __restrict rhc, const uint64_t wr_iid);
extern inline void rhc_set_qos (struct rhc *rhc, const struct dds_qos *qos);
void make_proxy_writer_info(struct proxy_writer_info *pwr_info, const struct entity_common *e, const struct dds_qos *xqos)
{
pwr_info->guid = e->guid;
pwr_info->ownership_strength = xqos->ownership_strength.value;
pwr_info->auto_dispose = xqos->writer_data_lifecycle.autodispose_unregistered_instances;
pwr_info->iid = e->iid;
}

View file

@ -134,7 +134,7 @@ struct nn_xmsg *writer_hbcontrol_create_heartbeat (struct writer *wr, const stru
{ {
struct q_globals const * const gv = wr->e.gv; struct q_globals const * const gv = wr->e.gv;
struct nn_xmsg *msg; struct nn_xmsg *msg;
const nn_guid_t *prd_guid; const ddsi_guid_t *prd_guid;
ASSERT_MUTEX_HELD (&wr->e.lock); ASSERT_MUTEX_HELD (&wr->e.lock);
assert (wr->reliable); assert (wr->reliable);
@ -313,7 +313,7 @@ struct nn_xmsg *writer_hbcontrol_piggyback (struct writer *wr, const struct whc_
return msg; return msg;
} }
void add_Heartbeat (struct nn_xmsg *msg, struct writer *wr, const struct whc_state *whcst, int hbansreq, nn_entityid_t dst, int issync) void add_Heartbeat (struct nn_xmsg *msg, struct writer *wr, const struct whc_state *whcst, int hbansreq, ddsi_entityid_t dst, int issync)
{ {
struct q_globals const * const gv = wr->e.gv; struct q_globals const * const gv = wr->e.gv;
struct nn_xmsg_marker sm_marker; struct nn_xmsg_marker sm_marker;

View file

@ -68,26 +68,26 @@ struct xevent
enum xeventkind kind; enum xeventkind kind;
union { union {
struct { struct {
nn_guid_t wr_guid; ddsi_guid_t wr_guid;
} heartbeat; } heartbeat;
struct { struct {
nn_guid_t pwr_guid; ddsi_guid_t pwr_guid;
nn_guid_t rd_guid; ddsi_guid_t rd_guid;
} acknack; } acknack;
struct { struct {
nn_guid_t pp_guid; ddsi_guid_t pp_guid;
nn_guid_prefix_t dest_proxypp_guid_prefix; /* only if "directed" */ ddsi_guid_prefix_t dest_proxypp_guid_prefix; /* only if "directed" */
int directed; /* if 0, undirected; if > 0, number of directed ones to send in reasonably short succession */ int directed; /* if 0, undirected; if > 0, number of directed ones to send in reasonably short succession */
} spdp; } spdp;
struct { struct {
nn_guid_t pp_guid; ddsi_guid_t pp_guid;
} pmd_update; } pmd_update;
#if 0 #if 0
struct { struct {
} info; } info;
#endif #endif
struct { struct {
nn_guid_t guid; ddsi_guid_t guid;
} delete_writer; } delete_writer;
struct { struct {
void (*cb) (struct xevent *ev, void *arg, nn_mtime_t tnow); void (*cb) (struct xevent *ev, void *arg, nn_mtime_t tnow);
@ -937,7 +937,7 @@ static void handle_xevk_acknack (UNUSED_ARG (struct nn_xpack *xp), struct xevent
resched_xevent_if_earlier (ev, add_duration_to_mtime (tnow, 100 * T_MILLISECOND)); resched_xevent_if_earlier (ev, add_duration_to_mtime (tnow, 100 * T_MILLISECOND));
} }
static bool resend_spdp_sample_by_guid_key (struct writer *wr, const nn_guid_t *guid, struct proxy_reader *prd) static bool resend_spdp_sample_by_guid_key (struct writer *wr, const ddsi_guid_t *guid, struct proxy_reader *prd)
{ {
/* Look up data in (transient-local) WHC by key value -- FIXME: clearly /* Look up data in (transient-local) WHC by key value -- FIXME: clearly
a slightly more efficient and elegant way of looking up the key value a slightly more efficient and elegant way of looking up the key value
@ -1009,7 +1009,7 @@ static void handle_xevk_spdp (UNUSED_ARG (struct nn_xpack *xp), struct xevent *e
} }
else else
{ {
nn_guid_t guid; ddsi_guid_t guid;
guid.prefix = ev->u.spdp.dest_proxypp_guid_prefix; guid.prefix = ev->u.spdp.dest_proxypp_guid_prefix;
guid.entityid.u = NN_ENTITYID_SPDP_BUILTIN_PARTICIPANT_READER; guid.entityid.u = NN_ENTITYID_SPDP_BUILTIN_PARTICIPANT_READER;
prd = ephash_lookup_proxy_reader_guid (gv->guid_hash, &guid); prd = ephash_lookup_proxy_reader_guid (gv->guid_hash, &guid);
@ -1387,7 +1387,7 @@ void qxev_msg (struct xeventq *evq, struct nn_xmsg *msg)
ddsrt_mutex_unlock (&evq->lock); ddsrt_mutex_unlock (&evq->lock);
} }
void qxev_prd_entityid (struct proxy_reader *prd, nn_guid_prefix_t *id) void qxev_prd_entityid (struct proxy_reader *prd, ddsi_guid_prefix_t *id)
{ {
struct q_globals * const gv = prd->e.gv; struct q_globals * const gv = prd->e.gv;
struct nn_xmsg *msg; struct nn_xmsg *msg;
@ -1415,7 +1415,7 @@ void qxev_prd_entityid (struct proxy_reader *prd, nn_guid_prefix_t *id)
} }
} }
void qxev_pwr_entityid (struct proxy_writer *pwr, nn_guid_prefix_t *id) void qxev_pwr_entityid (struct proxy_writer *pwr, ddsi_guid_prefix_t *id)
{ {
struct q_globals * const gv = pwr->e.gv; struct q_globals * const gv = pwr->e.gv;
struct nn_xmsg *msg; struct nn_xmsg *msg;
@ -1488,7 +1488,7 @@ int qxev_msg_rexmit_wrlock_held (struct xeventq *evq, struct nn_xmsg *msg, int f
} }
} }
struct xevent *qxev_heartbeat (struct xeventq *evq, nn_mtime_t tsched, const nn_guid_t *wr_guid) struct xevent *qxev_heartbeat (struct xeventq *evq, nn_mtime_t tsched, const ddsi_guid_t *wr_guid)
{ {
/* Event _must_ be deleted before enough of the writer is freed to /* Event _must_ be deleted before enough of the writer is freed to
cause trouble. Currently used exclusively for cause trouble. Currently used exclusively for
@ -1503,7 +1503,7 @@ struct xevent *qxev_heartbeat (struct xeventq *evq, nn_mtime_t tsched, const nn_
return ev; return ev;
} }
struct xevent *qxev_acknack (struct xeventq *evq, nn_mtime_t tsched, const nn_guid_t *pwr_guid, const nn_guid_t *rd_guid) struct xevent *qxev_acknack (struct xeventq *evq, nn_mtime_t tsched, const ddsi_guid_t *pwr_guid, const ddsi_guid_t *rd_guid)
{ {
struct xevent *ev; struct xevent *ev;
assert(evq); assert(evq);
@ -1516,7 +1516,7 @@ struct xevent *qxev_acknack (struct xeventq *evq, nn_mtime_t tsched, const nn_gu
return ev; return ev;
} }
struct xevent *qxev_spdp (struct xeventq *evq, nn_mtime_t tsched, const nn_guid_t *pp_guid, const nn_guid_t *dest_proxypp_guid) struct xevent *qxev_spdp (struct xeventq *evq, nn_mtime_t tsched, const ddsi_guid_t *pp_guid, const ddsi_guid_t *dest_proxypp_guid)
{ {
struct xevent *ev; struct xevent *ev;
ddsrt_mutex_lock (&evq->lock); ddsrt_mutex_lock (&evq->lock);
@ -1534,7 +1534,7 @@ struct xevent *qxev_spdp (struct xeventq *evq, nn_mtime_t tsched, const nn_guid_
return ev; return ev;
} }
struct xevent *qxev_pmd_update (struct xeventq *evq, nn_mtime_t tsched, const nn_guid_t *pp_guid) struct xevent *qxev_pmd_update (struct xeventq *evq, nn_mtime_t tsched, const ddsi_guid_t *pp_guid)
{ {
struct xevent *ev; struct xevent *ev;
ddsrt_mutex_lock (&evq->lock); ddsrt_mutex_lock (&evq->lock);
@ -1545,7 +1545,7 @@ struct xevent *qxev_pmd_update (struct xeventq *evq, nn_mtime_t tsched, const nn
return ev; return ev;
} }
struct xevent *qxev_delete_writer (struct xeventq *evq, nn_mtime_t tsched, const nn_guid_t *guid) struct xevent *qxev_delete_writer (struct xeventq *evq, nn_mtime_t tsched, const ddsi_guid_t *guid)
{ {
struct xevent *ev; struct xevent *ev;
ddsrt_mutex_lock (&evq->lock); ddsrt_mutex_lock (&evq->lock);

View file

@ -83,7 +83,7 @@ struct nn_xmsg {
union { union {
char control; char control;
struct { struct {
nn_guid_t wrguid; ddsi_guid_t wrguid;
seqno_t wrseq; seqno_t wrseq;
nn_fragment_number_t wrfragid; nn_fragment_number_t wrfragid;
/* readerId encodes offset to destination readerId or 0 -- used /* readerId encodes offset to destination readerId or 0 -- used
@ -191,7 +191,7 @@ struct nn_xpack
bool async_mode; bool async_mode;
Header_t hdr; Header_t hdr;
MsgLen_t msg_len; MsgLen_t msg_len;
nn_guid_prefix_t *last_src; ddsi_guid_prefix_t *last_src;
InfoDST_t *last_dst; InfoDST_t *last_dst;
int64_t maxdelay; int64_t maxdelay;
unsigned packetid; unsigned packetid;
@ -329,7 +329,7 @@ static struct nn_xmsg *nn_xmsg_allocnew (struct nn_xmsgpool *pool, size_t expect
return m; return m;
} }
struct nn_xmsg *nn_xmsg_new (struct nn_xmsgpool *pool, const nn_guid_prefix_t *src_guid_prefix, size_t expected_size, enum nn_xmsg_kind kind) struct nn_xmsg *nn_xmsg_new (struct nn_xmsgpool *pool, const ddsi_guid_prefix_t *src_guid_prefix, size_t expected_size, enum nn_xmsg_kind kind)
{ {
struct nn_xmsg *m; struct nn_xmsg *m;
if ((m = nn_freelist_pop (&pool->freelist)) != NULL) if ((m = nn_freelist_pop (&pool->freelist)) != NULL)
@ -460,7 +460,7 @@ enum nn_xmsg_kind nn_xmsg_kind (const struct nn_xmsg *m)
return m->kind; return m->kind;
} }
void nn_xmsg_guid_seq_fragid (const struct nn_xmsg *m, nn_guid_t *wrguid, seqno_t *wrseq, nn_fragment_number_t *wrfragid) void nn_xmsg_guid_seq_fragid (const struct nn_xmsg *m, ddsi_guid_t *wrguid, seqno_t *wrseq, nn_fragment_number_t *wrfragid)
{ {
assert (m->kind != NN_XMSG_KIND_CONTROL); assert (m->kind != NN_XMSG_KIND_CONTROL);
*wrguid = m->kindspecific.data.wrguid; *wrguid = m->kindspecific.data.wrguid;
@ -577,7 +577,7 @@ void nn_xmsg_serdata (struct nn_xmsg *m, struct ddsi_serdata *serdata, size_t of
} }
} }
void nn_xmsg_setdst1 (struct nn_xmsg *m, const nn_guid_prefix_t *gp, const nn_locator_t *loc) void nn_xmsg_setdst1 (struct nn_xmsg *m, const ddsi_guid_prefix_t *gp, const nn_locator_t *loc)
{ {
assert (m->dstmode == NN_XMSG_DST_UNSET); assert (m->dstmode == NN_XMSG_DST_UNSET);
m->dstmode = NN_XMSG_DST_ONE; m->dstmode = NN_XMSG_DST_ONE;
@ -620,7 +620,7 @@ void nn_xmsg_setdstN (struct nn_xmsg *m, struct addrset *as, struct addrset *as_
m->dstaddr.all.as_group = ref_addrset (as_group); m->dstaddr.all.as_group = ref_addrset (as_group);
} }
void nn_xmsg_set_data_readerId (struct nn_xmsg *m, nn_entityid_t *readerId) void nn_xmsg_set_data_readerId (struct nn_xmsg *m, ddsi_entityid_t *readerId)
{ {
assert (m->kind == NN_XMSG_KIND_DATA_REXMIT); assert (m->kind == NN_XMSG_KIND_DATA_REXMIT);
assert (m->kindspecific.data.readerId_off == 0); assert (m->kindspecific.data.readerId_off == 0);
@ -633,21 +633,21 @@ static void clear_readerId (struct nn_xmsg *m)
{ {
assert (m->kind == NN_XMSG_KIND_DATA_REXMIT); assert (m->kind == NN_XMSG_KIND_DATA_REXMIT);
assert (m->kindspecific.data.readerId_off != 0); assert (m->kindspecific.data.readerId_off != 0);
*((nn_entityid_t *) (m->data->payload + m->kindspecific.data.readerId_off)) = *((ddsi_entityid_t *) (m->data->payload + m->kindspecific.data.readerId_off)) =
nn_hton_entityid (to_entityid (NN_ENTITYID_UNKNOWN)); nn_hton_entityid (to_entityid (NN_ENTITYID_UNKNOWN));
} }
static nn_entityid_t load_readerId (const struct nn_xmsg *m) static ddsi_entityid_t load_readerId (const struct nn_xmsg *m)
{ {
assert (m->kind == NN_XMSG_KIND_DATA_REXMIT); assert (m->kind == NN_XMSG_KIND_DATA_REXMIT);
assert (m->kindspecific.data.readerId_off != 0); assert (m->kindspecific.data.readerId_off != 0);
return nn_ntoh_entityid (*((nn_entityid_t *) (m->data->payload + m->kindspecific.data.readerId_off))); return nn_ntoh_entityid (*((ddsi_entityid_t *) (m->data->payload + m->kindspecific.data.readerId_off)));
} }
static int readerId_compatible (const struct nn_xmsg *m, const struct nn_xmsg *madd) static int readerId_compatible (const struct nn_xmsg *m, const struct nn_xmsg *madd)
{ {
nn_entityid_t e = load_readerId (m); ddsi_entityid_t e = load_readerId (m);
nn_entityid_t eadd = load_readerId (madd); ddsi_entityid_t eadd = load_readerId (madd);
return e.u == NN_ENTITYID_UNKNOWN || e.u == eadd.u; return e.u == NN_ENTITYID_UNKNOWN || e.u == eadd.u;
} }
@ -750,13 +750,13 @@ int nn_xmsg_setencoderid (struct nn_xmsg *msg, uint32_t encoderid)
} }
#endif #endif
void nn_xmsg_setwriterseq (struct nn_xmsg *msg, const nn_guid_t *wrguid, seqno_t wrseq) void nn_xmsg_setwriterseq (struct nn_xmsg *msg, const ddsi_guid_t *wrguid, seqno_t wrseq)
{ {
msg->kindspecific.data.wrguid = *wrguid; msg->kindspecific.data.wrguid = *wrguid;
msg->kindspecific.data.wrseq = wrseq; msg->kindspecific.data.wrseq = wrseq;
} }
void nn_xmsg_setwriterseq_fragid (struct nn_xmsg *msg, const nn_guid_t *wrguid, seqno_t wrseq, nn_fragment_number_t wrfragid) void nn_xmsg_setwriterseq_fragid (struct nn_xmsg *msg, const ddsi_guid_t *wrguid, seqno_t wrseq, nn_fragment_number_t wrfragid)
{ {
nn_xmsg_setwriterseq (msg, wrguid, wrseq); nn_xmsg_setwriterseq (msg, wrguid, wrseq);
msg->kindspecific.data.wrfragid = wrfragid; msg->kindspecific.data.wrfragid = wrfragid;
@ -838,7 +838,7 @@ int nn_xmsg_addpar_sentinel_ifparam (struct nn_xmsg * m)
static void nn_xmsg_chain_release (struct q_globals *gv, struct nn_xmsg_chain *chain) static void nn_xmsg_chain_release (struct q_globals *gv, struct nn_xmsg_chain *chain)
{ {
nn_guid_t wrguid; ddsi_guid_t wrguid;
memset (&wrguid, 0, sizeof (wrguid)); memset (&wrguid, 0, sizeof (wrguid));
while (chain->latest) while (chain->latest)
@ -1385,7 +1385,7 @@ static int nn_xpack_mayaddmsg (const struct nn_xpack *xp, const struct nn_xmsg *
return addressing_info_eq_onesidederr (xp, m); return addressing_info_eq_onesidederr (xp, m);
} }
static int guid_prefix_eq (const nn_guid_prefix_t *a, const nn_guid_prefix_t *b) static int guid_prefix_eq (const ddsi_guid_prefix_t *a, const ddsi_guid_prefix_t *b)
{ {
return a->u[0] == b->u[0] && a->u[1] == b->u[1] && a->u[2] == b->u[2]; return a->u[0] == b->u[0] && a->u[1] == b->u[1] && a->u[2] == b->u[2];
} }
@ -1395,7 +1395,7 @@ int nn_xpack_addmsg (struct nn_xpack *xp, struct nn_xmsg *m, const uint32_t flag
/* Returns > 0 if pack got sent out before adding m */ /* Returns > 0 if pack got sent out before adding m */
struct q_globals const * const gv = xp->gv; struct q_globals const * const gv = xp->gv;
static InfoDST_t static_zero_dst = { static InfoDST_t static_zero_dst = {
{ SMID_INFO_DST, (DDSRT_ENDIAN == DDSRT_LITTLE_ENDIAN ? SMFLAG_ENDIANNESS : 0), sizeof (nn_guid_prefix_t) }, { SMID_INFO_DST, (DDSRT_ENDIAN == DDSRT_LITTLE_ENDIAN ? SMFLAG_ENDIANNESS : 0), sizeof (ddsi_guid_prefix_t) },
{ { 0,0,0,0, 0,0,0,0, 0,0,0,0 } } { { 0,0,0,0, 0,0,0,0, 0,0,0,0 } }
}; };
InfoDST_t *dst; InfoDST_t *dst;

View file

@ -30,7 +30,7 @@
#include "dds/ddsi/q_gc.h" #include "dds/ddsi/q_gc.h"
#include "dds/ddsi/ddsi_serdata.h" #include "dds/ddsi/ddsi_serdata.h"
#include "dds__topic.h" #include "dds__topic.h"
#include "dds__rhc.h" #include "dds/ddsc/dds_rhc.h"
#include "dds__rhc_default.h" #include "dds__rhc_default.h"
#include "dds/ddsi/ddsi_iid.h" #include "dds/ddsi/ddsi_iid.h"
@ -108,7 +108,7 @@ static uint64_t store (struct ddsi_tkmap *tkmap, struct dds_rhc *rhc, struct pro
{ {
/* beware: unrefs sd */ /* beware: unrefs sd */
struct ddsi_tkmap_instance *tk; struct ddsi_tkmap_instance *tk;
struct proxy_writer_info pwr_info; struct ddsi_writer_info pwr_info;
/* single-domain application ... so domain won't change */ /* single-domain application ... so domain won't change */
thread_state_awake_domain_ok (lookup_thread_state ()); thread_state_awake_domain_ok (lookup_thread_state ());
tk = ddsi_tkmap_lookup_instance_ref (tkmap, sd); tk = ddsi_tkmap_lookup_instance_ref (tkmap, sd);
@ -782,7 +782,7 @@ static void test_conditions (dds_entity_t pp, dds_entity_t tp, const int count,
} }
case 11: { case 11: {
thread_state_awake_domain_ok (lookup_thread_state ()); thread_state_awake_domain_ok (lookup_thread_state ());
struct proxy_writer_info wr_info; struct ddsi_writer_info wr_info;
wr_info.auto_dispose = wr[which]->c.xqos->writer_data_lifecycle.autodispose_unregistered_instances; wr_info.auto_dispose = wr[which]->c.xqos->writer_data_lifecycle.autodispose_unregistered_instances;
wr_info.guid = wr[which]->e.guid; wr_info.guid = wr[which]->e.guid;
wr_info.iid = wr[which]->e.iid; wr_info.iid = wr[which]->e.iid;
@ -890,7 +890,7 @@ int main (int argc, char **argv)
}; };
rdall (rhc, c1, print, states_seen); rdall (rhc, c1, print, states_seen);
thread_state_awake_domain_ok (lookup_thread_state ()); thread_state_awake_domain_ok (lookup_thread_state ());
struct proxy_writer_info wr0_info; struct ddsi_writer_info wr0_info;
wr0_info.auto_dispose = wr0->c.xqos->writer_data_lifecycle.autodispose_unregistered_instances; wr0_info.auto_dispose = wr0->c.xqos->writer_data_lifecycle.autodispose_unregistered_instances;
wr0_info.guid = wr0->e.guid; wr0_info.guid = wr0->e.guid;
wr0_info.iid = wr0->e.iid; wr0_info.iid = wr0->e.iid;