diff --git a/src/core/ddsc/CMakeLists.txt b/src/core/ddsc/CMakeLists.txt index 3865765..e10f21f 100644 --- a/src/core/ddsc/CMakeLists.txt +++ b/src/core/ddsc/CMakeLists.txt @@ -50,6 +50,7 @@ PREPEND(hdrs_public_ddsc "$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); } 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) { 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) { - return cond->m_rhc->common.ops->add_readcondition (cond); +DDS_EXPORT inline bool dds_rhc_add_readcondition (struct dds_rhc *rhc, struct dds_readcond *cond) { + return rhc->common.ops->add_readcondition (rhc, cond); } -DDS_EXPORT inline void dds_rhc_remove_readcondition (struct dds_readcond *cond) { - cond->m_rhc->common.ops->remove_readcondition (cond); +DDS_EXPORT inline void dds_rhc_remove_readcondition (struct dds_rhc *rhc, struct dds_readcond *cond) { + rhc->common.ops->remove_readcondition (rhc, cond); } DDS_EXPORT inline uint32_t dds_rhc_lock_samples (struct dds_rhc *rhc) { return rhc->common.ops->lock_samples (rhc); diff --git a/src/core/ddsc/src/dds__serdata_builtintopic.h b/src/core/ddsc/src/dds__serdata_builtintopic.h index 0fa180d..803f7e3 100644 --- a/src/core/ddsc/src/dds__serdata_builtintopic.h +++ b/src/core/ddsc/src/dds__serdata_builtintopic.h @@ -22,7 +22,7 @@ extern "C" { struct ddsi_serdata_builtintopic { struct ddsi_serdata c; - nn_guid_t key; + ddsi_guid_t key; dds_instance_handle_t pphandle; dds_qos_t xqos; }; diff --git a/src/core/ddsc/src/dds__types.h b/src/core/ddsc/src/dds__types.h index e1851a8..6face9c 100644 --- a/src/core/ddsc/src/dds__types.h +++ b/src/core/ddsc/src/dds__types.h @@ -39,7 +39,7 @@ struct dds_guardcond; struct dds_statuscond; struct ddsi_sertopic; -struct rhc; +struct ddsi_rhc; typedef uint16_t status_mask_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 */ struct dds_domain *m_domain; /* constant */ 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 */ uint32_t m_flags; /* [m_mutex] */ @@ -290,12 +290,10 @@ typedef uint32_t dds_querycond_mask_t; typedef struct dds_readcond { dds_entity m_entity; - struct dds_rhc *m_rhc; uint32_t m_qminv; uint32_t m_sample_states; uint32_t m_view_states; uint32_t m_instance_states; - nn_guid_t m_rd_guid; struct dds_readcond *m_next; struct { dds_querycondition_filter_fn m_filter; diff --git a/src/core/ddsc/src/dds_builtin.c b/src/core/ddsc/src/dds_builtin.c index 3652a38..5720f7d 100644 --- a/src/core/ddsc/src/dds_builtin.c +++ b/src/core/ddsc/src/dds_builtin.c @@ -162,7 +162,7 @@ static bool dds__builtin_is_builtintopic (const struct ddsi_sertopic *tp, void * 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; 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; } -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 ddsi_tkmap_instance *tk; diff --git a/src/core/ddsc/src/dds_domain.c b/src/core/ddsc/src/dds_domain.c index 7edd68b..e6cc624 100644 --- a/src/core/ddsc/src/dds_domain.c +++ b/src/core/ddsc/src/dds_domain.c @@ -15,7 +15,7 @@ #include "dds/ddsrt/process.h" #include "dds/ddsrt/heap.h" #include "dds__init.h" -#include "dds__rhc.h" +#include "dds/ddsc/dds_rhc.h" #include "dds__domain.h" #include "dds__builtin.h" #include "dds__whc_builtintopic.h" diff --git a/src/core/ddsc/src/dds_init.c b/src/core/ddsc/src/dds_init.c index 9094917..e1aa102 100644 --- a/src/core/ddsc/src/dds_init.c +++ b/src/core/ddsc/src/dds_init.c @@ -18,7 +18,7 @@ #include "dds/ddsrt/process.h" #include "dds/ddsrt/heap.h" #include "dds__init.h" -#include "dds__rhc.h" +#include "dds/ddsc/dds_rhc.h" #include "dds__domain.h" #include "dds__builtin.h" #include "dds__whc_builtintopic.h" diff --git a/src/core/ddsc/src/dds_instance.c b/src/core/ddsc/src/dds_instance.c index 31a027a..3104485 100644 --- a/src/core/ddsc/src/dds_instance.c +++ b/src/core/ddsc/src/dds_instance.c @@ -16,7 +16,7 @@ #include "dds__entity.h" #include "dds__write.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_serdata.h" #include "dds/ddsi/q_entity.h" diff --git a/src/core/ddsc/src/dds_matched.c b/src/core/ddsc/src/dds_matched.c index eb0b7b7..0fe4006 100644 --- a/src/core/ddsc/src/dds_matched.c +++ b/src/core/ddsc/src/dds_matched.c @@ -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; - nn_guid_t tmp; + ddsi_guid_t tmp; ep = dds_alloc (sizeof (*ep)); tmp = nn_hton_guid (*guid); memcpy (&ep->key, &tmp, sizeof (ep->key)); diff --git a/src/core/ddsc/src/dds_participant.c b/src/core/ddsc/src/dds_participant.c index 59acbd1..9815139 100644 --- a/src/core/ddsc/src/dds_participant.c +++ b/src/core/ddsc/src/dds_participant.c @@ -77,7 +77,7 @@ dds_entity_t dds_create_participant (const dds_domainid_t domain, const dds_qos_ { dds_domain *dom; dds_entity_t ret; - nn_guid_t guid; + ddsi_guid_t guid; dds_participant * pp; nn_plist_t plist; dds_qos_t *new_qos = NULL; diff --git a/src/core/ddsc/src/dds_read.c b/src/core/ddsc/src/dds_read.c index c8255ca..a2b1584 100644 --- a/src/core/ddsc/src/dds_read.c +++ b/src/core/ddsc/src/dds_read.c @@ -14,7 +14,7 @@ #include "dds__entity.h" #include "dds__reader.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_ephash.h" #include "dds/ddsi/q_entity.h" diff --git a/src/core/ddsc/src/dds_readcond.c b/src/core/ddsc/src/dds_readcond.c index e3b8f1b..294143a 100644 --- a/src/core/ddsc/src/dds_readcond.c +++ b/src/core/ddsc/src/dds_readcond.c @@ -12,7 +12,7 @@ #include #include "dds__reader.h" #include "dds__readcond.h" -#include "dds__rhc.h" +#include "dds/ddsc/dds_rhc.h" #include "dds__entity.h" #include "dds/ddsi/ddsi_iid.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) { - 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; } @@ -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); cond->m_entity.m_iid = ddsi_iid_gen (); 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_view_states = mask & DDS_ANY_VIEW_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) { cond->m_query.m_filter = filter; 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 entity because it doesn't allow deleting it again ... */ diff --git a/src/core/ddsc/src/dds_reader.c b/src/core/ddsc/src/dds_reader.c index 45d754f..17105f4 100644 --- a/src/core/ddsc/src/dds_reader.c +++ b/src/core/ddsc/src/dds_reader.c @@ -18,7 +18,7 @@ #include "dds__reader.h" #include "dds__listener.h" #include "dds__init.h" -#include "dds__rhc.h" +#include "dds/ddsc/dds_rhc.h" #include "dds__rhc_default.h" #include "dds__topic.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; struct reader *rd = dds_rd->m_rd; - nn_guid_t pwrguid; + ddsi_guid_t pwrguid; struct proxy_writer *pwr; struct rd_pwr_match *m; 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 I want to check this before I write a lookup_succ function. */ struct rd_pwr_match *m_next; - nn_guid_t pwrguid_next; + ddsi_guid_t pwrguid_next; pwrguid = m->pwr_guid; if ((m_next = ddsrt_avl_find_succ (&rd_writers_treedef, &rd->writers, m)) != NULL) pwrguid_next = m_next->pwr_guid; diff --git a/src/core/ddsc/src/dds_rhc.c b/src/core/ddsc/src/dds_rhc.c index 86bbf79..1673930 100644 --- a/src/core/ddsc/src/dds_rhc.c +++ b/src/core/ddsc/src/dds_rhc.c @@ -11,17 +11,17 @@ */ #include "dds/dds.h" -#include "dds/ddsi/q_rhc.h" -#include "dds__rhc.h" +#include "dds/ddsi/ddsi_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 void dds_rhc_unregister_wr (struct dds_rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info); +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 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_set_qos (struct dds_rhc *rhc, const struct dds_qos *qos); 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_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_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, 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 bool dds_rhc_add_readcondition (struct dds_readcond *cond); -extern inline void dds_rhc_remove_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_rhc *rhc, struct dds_readcond *cond); extern inline uint32_t dds_rhc_lock_samples (struct dds_rhc *rhc); diff --git a/src/core/ddsc/src/dds_rhc_default.c b/src/core/ddsc/src/dds_rhc_default.c index 8de4585..c1f6575 100644 --- a/src/core/ddsc/src/dds_rhc_default.c +++ b/src/core/ddsc/src/dds_rhc_default.c @@ -25,12 +25,12 @@ #include "dds__entity.h" #include "dds__reader.h" -#include "dds__rhc.h" +#include "dds/ddsc/dds_rhc.h" #include "dds__rhc_default.h" #include "dds/ddsi/ddsi_tkmap.h" #include "dds/ddsrt/hopscotch.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_unused.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 no_writers_gen; /* __/ */ 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 */ struct rhc_instance *next; /* next non-empty instance in arbitrary ordering */ struct rhc_instance *prev; @@ -346,30 +346,30 @@ struct trigger_info_post { }; 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 void dds_rhc_default_unregister_wr (struct dds_rhc_default * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info); +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 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_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_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 bool dds_rhc_default_add_readcondition (dds_readcond *cond); -static void dds_rhc_default_remove_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 (struct dds_rhc_default *rhc, dds_readcond *cond); 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); } -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) { - return dds_rhc_default_store ((struct dds_rhc_default *) rhc, pwr_info, sample, 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, wrinfo, sample, tk); } -static void dds_rhc_default_unregister_wr_wrap (struct rhc * __restrict rhc, const struct proxy_writer_info * __restrict pwr_info) { - dds_rhc_default_unregister_wr ((struct dds_rhc_default *) rhc, 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, 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); } -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); } 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) { 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) { - return dds_rhc_default_add_readcondition (cond); +static bool dds_rhc_default_add_readcondition_wrap (struct dds_rhc *rhc, dds_readcond *cond) { + return dds_rhc_default_add_readcondition ((struct dds_rhc_default *) rhc, cond); } -static void dds_rhc_default_remove_readcondition_wrap (dds_readcond *cond) { - dds_rhc_default_remove_readcondition (cond); +static void dds_rhc_default_remove_readcondition_wrap (struct dds_rhc *rhc, dds_readcond *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) { 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); } -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; @@ -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->wr_iid = pwr_info->iid; + s->wr_iid = wrinfo->iid; s->isread = false; s->disposed_gen = inst->disposed_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; } -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) { @@ -884,7 +884,7 @@ static int inst_accepts_sample (const struct dds_rhc_default *rhc, const struct { return 0; } - else if (inst_accepts_sample_by_writer_guid (inst, pwr_info)) + else if (inst_accepts_sample_by_writer_guid (inst, wrinfo)) { /* ok */ } @@ -893,14 +893,14 @@ static int inst_accepts_sample (const struct dds_rhc_default *rhc, const struct 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) { /* ok */ } else if (strength < inst->strength) { return 0; - } else if (inst_accepts_sample_by_writer_guid (inst, pwr_info)) { + } else if (inst_accepts_sample_by_writer_guid (inst, wrinfo)) { /* ok */ } else { return 0; @@ -913,17 +913,17 @@ static int inst_accepts_sample (const struct dds_rhc_default *rhc, const struct 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->wr_iid_islive = wr_iid_valid; if (wr_iid_valid) { - inst->wr_iid = pwr_info->iid; - if (inst->wr_iid != pwr_info->iid) - inst->wr_guid = pwr_info->guid; + inst->wr_iid = wrinfo->iid; + if (inst->wr_iid != wrinfo->iid) + 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) @@ -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); 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 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) { inst_set_invsample (rhc, inst, trig_qc, nda); - update_inst (inst, pwr_info, false, tstamp); + update_inst (inst, wrinfo, false, tstamp); } if (!inst->isdisposed) { @@ -1164,7 +1164,7 @@ static int rhc_unregister_updateinst (struct dds_rhc_default *rhc, struct rhc_in TRACE (",#0,empty,nowriters"); assert (inst_is_empty (inst)); 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); inst->wr_iid_islive = 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; /* 'post' always gets set; instance may have been freed upon return. */ 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 */ get_trigger_info_cmn (&post->c, inst); } - else if (rhc_unregister_updateinst (rhc, inst, pwr_info, tstamp, trig_qc, ¬ify_data_available)) + else if (rhc_unregister_updateinst (rhc, inst, wrinfo, tstamp, trig_qc, ¬ify_data_available)) { /* instance dropped */ 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; } -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; @@ -1210,11 +1210,11 @@ static struct rhc_instance *alloc_new_instance (const struct dds_rhc_default *rh inst->isnew = 1; inst->a_sample_free = 1; inst->conds = 0; - inst->wr_iid = pwr_info->iid; + inst->wr_iid = wrinfo->iid; inst->wr_iid_islive = (inst->wrcount != 0); - inst->wr_guid = pwr_info->guid; + inst->wr_guid = wrinfo->guid; inst->tstamp = serdata->timestamp; - inst->strength = pwr_info->ownership_strength; + inst->strength = wrinfo->ownership_strength; if (rhc->nqconds != 0) { @@ -1230,7 +1230,7 @@ static struct rhc_instance *alloc_new_instance (const struct dds_rhc_default *rh 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; int ret; @@ -1265,10 +1265,10 @@ static rhc_store_result_t rhc_store_new_instance (struct rhc_instance **out_inst return RHC_REJECTED; } - inst = alloc_new_instance (rhc, pwr_info, sample, tk); + inst = alloc_new_instance (rhc, wrinfo, sample, tk); 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); 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). */ -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 bool has_data = (sample->kind == SDK_DATA); 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 { 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) { 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; } } - 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; 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 (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; } else @@ -1450,7 +1450,7 @@ static bool dds_rhc_default_store (struct dds_rhc_default * __restrict rhc, cons if (has_data) { 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)"); 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) inst_set_invsample (rhc, inst, &trig_qc, ¬ify_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 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 again after the unregister will see a change in the 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 { @@ -1559,7 +1559,7 @@ error_or_nochange: 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. @@ -1579,8 +1579,8 @@ static void dds_rhc_default_unregister_wr (struct dds_rhc_default * __restrict r bool notify_data_available = false; struct rhc_instance *inst; struct ddsrt_hh_iter iter; - const uint64_t wr_iid = pwr_info->iid; - const int auto_dispose = pwr_info->auto_dispose; + const uint64_t wr_iid = wrinfo->iid; + const int auto_dispose = wrinfo->auto_dispose; 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"); @@ -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 waitset for nearly all of its life, we keep track of all readconditions on a reader in one set, without distinguishing 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; 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; } -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; ddsrt_mutex_lock (&rhc->lock); ptr = &rhc->conds; diff --git a/src/core/ddsc/src/dds_serdata_builtintopic.c b/src/core/ddsc/src/dds_serdata_builtintopic.c index 06ae6f4..4bedb15 100644 --- a/src/core/ddsc/src/dds_serdata_builtintopic.c +++ b/src/core/ddsc/src/dds_serdata_builtintopic.c @@ -32,7 +32,7 @@ static const uint64_t unihashconsts[] = { UINT64_C (16728792139623414127) }; -static uint32_t hash_guid (const nn_guid_t *g) +static uint32_t hash_guid (const ddsi_guid_t *g) { return (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. */ const struct ddsi_sertopic_builtintopic *tp = (const struct ddsi_sertopic_builtintopic *)tpcmn; /* 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); memcpy (&d->key, keyhash->value, sizeof (d->key)); if (entity) @@ -175,9 +175,9 @@ static struct ddsi_serdata *serdata_builtin_to_topicless (const struct ddsi_serd 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); 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) { - nn_guid_t ppguid; + ddsi_guid_t ppguid; convkey (&sample->key, &d->key); ppguid = d->key; ppguid.entityid.u = NN_ENTITYID_PARTICIPANT; diff --git a/src/core/ddsc/src/dds_waitset.c b/src/core/ddsc/src/dds_waitset.c index 6e50c16..d942414 100644 --- a/src/core/ddsc/src/dds_waitset.c +++ b/src/core/ddsc/src/dds_waitset.c @@ -18,7 +18,7 @@ #include "dds__querycond.h" #include "dds__readcond.h" #include "dds__init.h" -#include "dds__rhc.h" +#include "dds/ddsc/dds_rhc.h" #include "dds/ddsi/ddsi_iid.h" DEFINE_ENTITY_LOCK_UNLOCK_ONLY (static, dds_waitset, DDS_KIND_WAITSET) diff --git a/src/core/ddsc/src/dds_write.c b/src/core/ddsc/src/dds_write.c index 4115b0d..852921e 100644 --- a/src/core/ddsc/src/dds_write.c +++ b/src/core/ddsc/src/dds_write.c @@ -16,7 +16,7 @@ #include "dds/ddsi/ddsi_tkmap.h" #include "dds/ddsi/q_thread.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__stream.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; } -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) { @@ -98,8 +98,8 @@ static dds_return_t deliver_locally (struct writer *wr, struct ddsi_serdata *pay if (rdary[0]) { dds_duration_t max_block_ms = wr->xqos->reliability.max_blocking_time; - struct proxy_writer_info pwr_info; - make_proxy_writer_info (&pwr_info, &wr->e, wr->xqos); + struct ddsi_writer_info pwr_info; + ddsi_make_writer_info (&pwr_info, &wr->e, wr->xqos); for (uint32_t i = 0; rdary[i]; i++) { 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) @@ -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. */ ddsrt_avl_iter_t it; 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; dds_duration_t max_block_ms = wr->xqos->reliability.max_blocking_time; 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); 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)); /* 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; } } diff --git a/src/core/ddsi/CMakeLists.txt b/src/core/ddsi/CMakeLists.txt index c245722..06c09fe 100644 --- a/src/core/ddsi/CMakeLists.txt +++ b/src/core/ddsi/CMakeLists.txt @@ -26,6 +26,7 @@ PREPEND(srcs_ddsi "${CMAKE_CURRENT_LIST_DIR}/src" ddsi_tkmap.c ddsi_vendor.c ddsi_threadmon.c + ddsi_rhc.c q_addrset.c q_bitset_inlines.c q_bswap.c @@ -53,7 +54,6 @@ PREPEND(srcs_ddsi "${CMAKE_CURRENT_LIST_DIR}/src" q_transmit.c q_inverse_uint32_set.c q_whc.c - q_rhc.c q_xevent.c q_xmsg.c q_freelist.c @@ -78,6 +78,8 @@ PREPEND(hdrs_private_ddsi "${CMAKE_CURRENT_LIST_DIR}/include/dds/ddsi" ddsi_vendor.h ddsi_threadmon.h ddsi_builtin_topic_if.h + ddsi_rhc.h + ddsi_guid.h q_addrset.h q_bitset.h q_bswap.h @@ -102,7 +104,6 @@ PREPEND(hdrs_private_ddsi "${CMAKE_CURRENT_LIST_DIR}/include/dds/ddsi" q_qosmatch.h q_radmin.h q_receive.h - q_rhc.h q_rtps.h q_security.h q_sockwaitset.h diff --git a/src/core/ddsi/include/dds/ddsi/ddsi_builtin_topic_if.h b/src/core/ddsi/include/dds/ddsi/ddsi_builtin_topic_if.h index 0032160..fdfac07 100644 --- a/src/core/ddsi/include/dds/ddsi/ddsi_builtin_topic_if.h +++ b/src/core/ddsi/include/dds/ddsi/ddsi_builtin_topic_if.h @@ -22,24 +22,24 @@ extern "C" { struct entity_common; struct ddsi_tkmap_instance; struct ddsi_sertopic; -struct nn_guid; +struct ddsi_guid; struct ddsi_builtin_topic_interface { 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); - struct ddsi_tkmap_instance * (*builtintopic_get_tkmap_entry) (const struct nn_guid *guid, 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 ddsi_guid *guid, 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; } 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; } -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; } inline void builtintopic_write (const struct ddsi_builtin_topic_interface *btif, const struct entity_common *e, nn_wctime_t timestamp, bool alive) { diff --git a/src/core/ddsi/include/dds/ddsi/ddsi_guid.h b/src/core/ddsi/include/dds/ddsi/ddsi_guid.h new file mode 100644 index 0000000..de44bf1 --- /dev/null +++ b/src/core/ddsi/include/dds/ddsi/ddsi_guid.h @@ -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 + +#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 diff --git a/src/core/ddsi/include/dds/ddsi/ddsi_rhc.h b/src/core/ddsi/include/dds/ddsi/ddsi_rhc.h new file mode 100644 index 0000000..aa4a207 --- /dev/null +++ b/src/core/ddsi/include/dds/ddsi/ddsi_rhc.h @@ -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 +#include +#include + +#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 */ diff --git a/src/core/ddsi/include/dds/ddsi/q_bswap.h b/src/core/ddsi/include/dds/ddsi/q_bswap.h index b186f69..d7f058d 100644 --- a/src/core/ddsi/include/dds/ddsi/q_bswap.h +++ b/src/core/ddsi/include/dds/ddsi/q_bswap.h @@ -88,12 +88,12 @@ inline void bswapSN (nn_sequence_number_t *sn) #define fromBE8u(x) (x) #endif -nn_guid_prefix_t nn_hton_guid_prefix (nn_guid_prefix_t p); -nn_guid_prefix_t nn_ntoh_guid_prefix (nn_guid_prefix_t p); -nn_entityid_t nn_hton_entityid (nn_entityid_t e); -nn_entityid_t nn_ntoh_entityid (nn_entityid_t e); -nn_guid_t nn_hton_guid (nn_guid_t g); -nn_guid_t nn_ntoh_guid (nn_guid_t g); +ddsi_guid_prefix_t nn_hton_guid_prefix (ddsi_guid_prefix_t p); +ddsi_guid_prefix_t nn_ntoh_guid_prefix (ddsi_guid_prefix_t p); +ddsi_entityid_t nn_hton_entityid (ddsi_entityid_t e); +ddsi_entityid_t nn_ntoh_entityid (ddsi_entityid_t e); +ddsi_guid_t nn_hton_guid (ddsi_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_bitmap (nn_sequence_number_set_header_t *snset, uint32_t *bits); diff --git a/src/core/ddsi/include/dds/ddsi/q_ddsi_discovery.h b/src/core/ddsi/include/dds/ddsi/q_ddsi_discovery.h index ea0e29a..9077d98 100644 --- a/src/core/ddsi/include/dds/ddsi/q_ddsi_discovery.h +++ b/src/core/ddsi/include/dds/ddsi/q_ddsi_discovery.h @@ -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_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) } diff --git a/src/core/ddsi/include/dds/ddsi/q_entity.h b/src/core/ddsi/include/dds/ddsi/q_entity.h index 78533c8..ff27f6c 100644 --- a/src/core/ddsi/include/dds/ddsi/q_entity.h +++ b/src/core/ddsi/include/dds/ddsi/q_entity.h @@ -59,12 +59,12 @@ typedef void (*status_cb_t) (void *entity, const status_cb_data_t *data); struct prd_wr_match { ddsrt_avl_node_t avlnode; - nn_guid_t wr_guid; + ddsi_guid_t wr_guid; }; struct rd_pwr_match { ddsrt_avl_node_t avlnode; - nn_guid_t pwr_guid; + ddsi_guid_t pwr_guid; #ifdef DDSI_INCLUDE_SSM nn_locator_t ssm_mc_loc; nn_locator_t ssm_src_loc; @@ -73,17 +73,17 @@ struct rd_pwr_match { struct wr_rd_match { ddsrt_avl_node_t avlnode; - nn_guid_t rd_guid; + ddsi_guid_t rd_guid; }; struct rd_wr_match { ddsrt_avl_node_t avlnode; - nn_guid_t wr_guid; + ddsi_guid_t wr_guid; }; struct wr_prd_match { 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 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 */ @@ -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 seq; /* highest acknowledged seq nr */ 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_nackfrag; /* next acceptable nackfrag sequence number */ 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 { ddsrt_avl_node_t avlnode; - nn_guid_t rd_guid; + ddsi_guid_t rd_guid; nn_mtime_t tcreate; nn_count_t count; /* most recent acknack sequence number */ 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 { enum entity_kind kind; - nn_guid_t guid; + ddsi_guid_t guid; nn_wctime_t tupdate; /* timestamp of last update */ char *name; uint64_t iid; @@ -188,7 +188,7 @@ struct participant struct endpoint_common { 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 */ @@ -281,7 +281,7 @@ struct reader struct endpoint_common c; status_cb_t status_cb; 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; unsigned reliable: 1; /* 1 iff reader is reliable */ 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 */ unsigned bes; /* built-in endpoint set */ unsigned prismtech_bes; /* prismtech-specific extension of built-in endpoints set */ - nn_guid_t privileged_pp_guid; /* if this PP depends on another PP for its SEDP writing */ + 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 */ 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 */ @@ -333,7 +333,7 @@ struct proxy_participant participant. */ struct proxy_group { ddsrt_avl_node_t avlnode; - nn_guid_t guid; + ddsi_guid_t guid; char *name; struct proxy_participant *proxypp; /* uncounted backref to proxy participant */ 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 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 */ - 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 */ 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 *deleted_participants_admin_new (int64_t delay); 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); -int is_builtin_entityid (nn_entityid_t id, nn_vendorid_t vendorid); -int is_builtin_endpoint (nn_entityid_t id, nn_vendorid_t vendorid); +ddsi_entityid_t to_entityid (unsigned u); +int is_builtin_entityid (ddsi_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); -int is_writer_entityid (nn_entityid_t id); -int is_reader_entityid (nn_entityid_t id); -int is_keyed_endpoint_entityid (nn_entityid_t id); +int is_writer_entityid (ddsi_entityid_t id); +int is_reader_entityid (ddsi_entityid_t id); +int is_keyed_endpoint_entityid (ddsi_entityid_t id); nn_vendorid_t get_entity_vendorid (const struct entity_common *e); /* 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 * 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. @@ -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 * 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: @@ -540,9 +540,9 @@ dds_return_t new_participant (struct nn_guid *ppguid, struct q_globals *gv, unsi * @retval DDS_RETCODE_BAD_PARAMETER * 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); -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, 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 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_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_clear_retransmitting (struct writer *wr); -dds_return_t delete_writer (struct q_globals *gv, const struct nn_guid *guid); -dds_return_t delete_writer_nolinger (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 ddsi_guid *guid); 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 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); /* 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 */ #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); -int delete_proxy_participant_by_guid (struct q_globals *gv, const struct nn_guid *guid, nn_wctime_t timestamp, int isimplicit); +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 ddsi_guid *guid, nn_wctime_t timestamp, int isimplicit); enum update_proxy_participant_source { 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 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_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_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 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 , int favours_ssm #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 no outstanding references may still exist (determined by checking 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_reader (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 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_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); -void delete_proxy_group (struct ephash *guid_hash, const struct nn_guid *guid, nn_wctime_t timestamp, int isimplicit); +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 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 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 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) } #endif diff --git a/src/core/ddsi/include/dds/ddsi/q_ephash.h b/src/core/ddsi/include/dds/ddsi/q_ephash.h index 7af049b..c0a613e 100644 --- a/src/core/ddsi/include/dds/ddsi/q_ephash.h +++ b/src/core/ddsi/include/dds/ddsi/q_ephash.h @@ -25,7 +25,7 @@ struct writer; struct proxy_participant; struct proxy_reader; struct proxy_writer; -struct nn_guid; +struct ddsi_guid; enum entity_kind { 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_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 (const struct ephash *eh, const struct nn_guid *guid, enum entity_kind kind); +void *ephash_lookup_guid_untyped (const struct ephash *eh, const struct ddsi_guid *guid); +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 proxy_participant *ephash_lookup_proxy_participant_guid (const struct ephash *eh, const struct nn_guid *guid); -struct writer *ephash_lookup_writer_guid (const struct ephash *eh, const struct nn_guid *guid); -struct reader *ephash_lookup_reader_guid (const struct ephash *eh, const struct nn_guid *guid); -struct proxy_writer *ephash_lookup_proxy_writer_guid (const struct ephash *eh, const struct nn_guid *guid); -struct proxy_reader *ephash_lookup_proxy_reader_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 ddsi_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 ddsi_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 ddsi_guid *guid); /* Enumeration of entries in the hash table: diff --git a/src/core/ddsi/include/dds/ddsi/q_globals.h b/src/core/ddsi/include/dds/ddsi/q_globals.h index 8458273..3b8ec82 100644 --- a/src/core/ddsi/include/dds/ddsi/q_globals.h +++ b/src/core/ddsi/include/dds/ddsi/q_globals.h @@ -158,7 +158,7 @@ struct q_globals { /* GUID to be used in next call to new_participant; also protected 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 the selected/preferred one, and the discovered interfaces. */ diff --git a/src/core/ddsi/include/dds/ddsi/q_plist.h b/src/core/ddsi/include/dds/ddsi/q_plist.h index fcf54aa..4a9d6f3 100644 --- a/src/core/ddsi/include/dds/ddsi/q_plist.h +++ b/src/core/ddsi/include/dds/ddsi/q_plist.h @@ -116,7 +116,7 @@ typedef struct nn_prismtech_participant_version_info } nn_prismtech_participant_version_info_t; typedef struct nn_prismtech_eotgroup_tid { - nn_entityid_t writer_entityid; + ddsi_entityid_t writer_entityid; uint32_t transactionId; } nn_prismtech_eotgroup_tid_t; @@ -140,9 +140,9 @@ typedef struct nn_plist { uint32_t participant_builtin_endpoints; dds_duration_t participant_lease_duration; /* nn_content_filter_property_t content_filter_property; */ - nn_guid_t participant_guid; - nn_guid_t endpoint_guid; - nn_guid_t group_guid; + ddsi_guid_t participant_guid; + ddsi_guid_t endpoint_guid; + ddsi_guid_t group_guid; #if 0 /* reserved, rather than NIY */ nn_entityid_t participant_entityid; nn_entityid_t group_entityid; diff --git a/src/core/ddsi/include/dds/ddsi/q_protocol.h b/src/core/ddsi/include/dds/ddsi/q_protocol.h index 2a814f3..93bda9a 100644 --- a/src/core/ddsi/include/dds/ddsi/q_protocol.h +++ b/src/core/ddsi/include/dds/ddsi/q_protocol.h @@ -116,7 +116,7 @@ typedef struct Header { nn_protocolid_t protocol; nn_protocol_version_t version; nn_vendorid_t vendorid; - nn_guid_prefix_t guid_prefix; + ddsi_guid_prefix_t guid_prefix; } Header_t; #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)) @@ -162,12 +162,12 @@ typedef struct InfoTimestamp { typedef struct EntityId { SubmessageHeader_t smhdr; - nn_entityid_t entityid; + ddsi_entityid_t entityid; } EntityId_t; typedef struct InfoDST { SubmessageHeader_t smhdr; - nn_guid_prefix_t guid_prefix; + ddsi_guid_prefix_t guid_prefix; } InfoDST_t; typedef struct InfoSRC { @@ -175,7 +175,7 @@ typedef struct InfoSRC { unsigned unused; nn_protocol_version_t version; nn_vendorid_t vendorid; - nn_guid_prefix_t guid_prefix; + ddsi_guid_prefix_t guid_prefix; } InfoSRC_t; #if DDSRT_ENDIAN == DDSRT_LITTLE_ENDIAN @@ -197,8 +197,8 @@ typedef struct Data_DataFrag_common { SubmessageHeader_t smhdr; uint16_t extraFlags; uint16_t octetsToInlineQos; - nn_entityid_t readerId; - nn_entityid_t writerId; + ddsi_entityid_t readerId; + ddsi_entityid_t writerId; nn_sequence_number_t writerSN; } Data_DataFrag_common_t; @@ -227,8 +227,8 @@ typedef struct MsgLen { DDSRT_WARNING_MSVC_OFF(4200) typedef struct AckNack { SubmessageHeader_t smhdr; - nn_entityid_t readerId; - nn_entityid_t writerId; + ddsi_entityid_t readerId; + ddsi_entityid_t writerId; nn_sequence_number_set_header_t readerSNState; uint32_t bits[]; /* nn_count_t count; */ @@ -241,8 +241,8 @@ DDSRT_WARNING_MSVC_ON(4200) DDSRT_WARNING_MSVC_OFF(4200) typedef struct Gap { SubmessageHeader_t smhdr; - nn_entityid_t readerId; - nn_entityid_t writerId; + ddsi_entityid_t readerId; + ddsi_entityid_t writerId; nn_sequence_number_t gapStart; nn_sequence_number_set_header_t gapList; uint32_t bits[]; @@ -259,8 +259,8 @@ typedef struct InfoTS { typedef struct Heartbeat { SubmessageHeader_t smhdr; - nn_entityid_t readerId; - nn_entityid_t writerId; + ddsi_entityid_t readerId; + ddsi_entityid_t writerId; nn_sequence_number_t firstSN; nn_sequence_number_t lastSN; nn_count_t count; @@ -270,8 +270,8 @@ typedef struct Heartbeat { typedef struct HeartbeatFrag { SubmessageHeader_t smhdr; - nn_entityid_t readerId; - nn_entityid_t writerId; + ddsi_entityid_t readerId; + ddsi_entityid_t writerId; nn_sequence_number_t writerSN; nn_fragment_number_t lastFragmentNum; nn_count_t count; @@ -280,8 +280,8 @@ typedef struct HeartbeatFrag { DDSRT_WARNING_MSVC_OFF(4200) typedef struct NackFrag { SubmessageHeader_t smhdr; - nn_entityid_t readerId; - nn_entityid_t writerId; + ddsi_entityid_t readerId; + ddsi_entityid_t writerId; nn_sequence_number_t writerSN; nn_fragment_number_set_header_t fragmentNumberState; uint32_t bits[]; @@ -314,7 +314,7 @@ typedef union Submessage { DDSRT_WARNING_MSVC_OFF(4200) typedef struct ParticipantMessageData { - nn_guid_prefix_t participantGuidPrefix; + ddsi_guid_prefix_t participantGuidPrefix; uint32_t kind; /* really 4 octets */ uint32_t length; char value[]; diff --git a/src/core/ddsi/include/dds/ddsi/q_radmin.h b/src/core/ddsi/include/dds/ddsi/q_radmin.h index 0d3100f..61814bf 100644 --- a/src/core/ddsi/include/dds/ddsi/q_radmin.h +++ b/src/core/ddsi/include/dds/ddsi/q_radmin.h @@ -30,14 +30,14 @@ struct nn_rsample_info; struct nn_defrag; struct nn_reorder; struct nn_dqueue; -struct nn_guid; +struct ddsi_guid; struct proxy_writer; struct nn_fragment_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_rbuf *rbuf; @@ -102,8 +102,8 @@ struct nn_rmsg { #define NN_RMSG_PAYLOADOFF(m, o) (NN_RMSG_PAYLOAD (m) + (o)) struct receiver_state { - nn_guid_prefix_t src_guid_prefix; /* 12 */ - nn_guid_prefix_t dst_guid_prefix; /* 12 */ + ddsi_guid_prefix_t src_guid_prefix; /* 12 */ + ddsi_guid_prefix_t dst_guid_prefix; /* 12 */ struct addrset *reply_locators; /* 4/8 */ int forme; /* 4 */ 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); 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_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); int nn_dqueue_is_full (struct nn_dqueue *q); void nn_dqueue_wait_until_empty_if_full (struct nn_dqueue *q); diff --git a/src/core/ddsi/include/dds/ddsi/q_receive.h b/src/core/ddsi/include/dds/ddsi/q_receive.h index bb3555b..e165bea 100644 --- a/src/core/ddsi/include/dds/ddsi/q_receive.h +++ b/src/core/ddsi/include/dds/ddsi/q_receive.h @@ -25,7 +25,7 @@ struct recv_thread_arg; void trigger_recv_threads (const struct q_globals *gv); uint32_t recv_thread (void *vrecv_thread_arg); 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) } diff --git a/src/core/ddsi/include/dds/ddsi/q_rhc.h b/src/core/ddsi/include/dds/ddsi/q_rhc.h deleted file mode 100644 index 5b9c5ce..0000000 --- a/src/core/ddsi/include/dds/ddsi/q_rhc.h +++ /dev/null @@ -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 -#include -#include - -#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 */ diff --git a/src/core/ddsi/include/dds/ddsi/q_rtps.h b/src/core/ddsi/include/dds/ddsi/q_rtps.h index 0b6ff39..dfe0d39 100644 --- a/src/core/ddsi/include/dds/ddsi/q_rtps.h +++ b/src/core/ddsi/include/dds/ddsi/q_rtps.h @@ -13,6 +13,7 @@ #define NN_RTPS_H #include "dds/ddsi/ddsi_vendor.h" +#include "dds/ddsi/ddsi_guid.h" #if defined (__cplusplus) extern "C" { @@ -21,17 +22,6 @@ extern "C" { typedef struct { uint8_t major, minor; } 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; #define MAX_SEQ_NUMBER INT64_MAX diff --git a/src/core/ddsi/include/dds/ddsi/q_transmit.h b/src/core/ddsi/include/dds/ddsi/q_transmit.h index 9fc3f2d..c7899e6 100644 --- a/src/core/ddsi/include/dds/ddsi/q_transmit.h +++ b/src/core/ddsi/include/dds/ddsi/q_transmit.h @@ -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 */ 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); -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) } diff --git a/src/core/ddsi/include/dds/ddsi/q_xevent.h b/src/core/ddsi/include/dds/ddsi/q_xevent.h index e18b47f..ab25b3e 100644 --- a/src/core/ddsi/include/dds/ddsi/q_xevent.h +++ b/src/core/ddsi/include/dds/ddsi/q_xevent.h @@ -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 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_prd_entityid (struct proxy_reader * prd, 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, ddsi_guid_prefix_t * id); /* Returns 1 if queued, 0 otherwise (no point in returning the 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 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_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_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_pmd_update (struct xeventq *evq, nn_mtime_t tsched, const nn_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_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 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 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 ddsi_guid_t *pp_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 */ 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); diff --git a/src/core/ddsi/include/dds/ddsi/q_xmsg.h b/src/core/ddsi/include/dds/ddsi/q_xmsg.h index 480b72a..78463a7 100644 --- a/src/core/ddsi/include/dds/ddsi/q_xmsg.h +++ b/src/core/ddsi/include/dds/ddsi/q_xmsg.h @@ -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 exceeded, no reallocs will be performed, else the address of the 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) */ -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 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 a separate function because the location may only become known at a 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 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; wrfragid is 0 based, unlike DDSI but like other places where 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_fragid (struct nn_xmsg *msg, const nn_guid_t *wrguid, seqno_t wrseq, nn_fragment_number_t wrfragid); +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 ddsi_guid_t *wrguid, seqno_t wrseq, nn_fragment_number_t wrfragid); /* Comparison function for retransmits: orders messages on writer 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_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); -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_append (struct nn_xmsg *m, struct nn_xmsg_marker *marker, size_t sz); diff --git a/src/core/ddsi/src/ddsi_rhc.c b/src/core/ddsi/src/ddsi_rhc.c new file mode 100644 index 0000000..48b3262 --- /dev/null +++ b/src/core/ddsi/src/ddsi_rhc.c @@ -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); diff --git a/src/core/ddsi/src/q_bswap.c b/src/core/ddsi/src/q_bswap.c index c3ee3cf..73e1778 100644 --- a/src/core/ddsi/src/q_bswap.c +++ b/src/core/ddsi/src/q_bswap.c @@ -11,7 +11,7 @@ */ #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; 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; } -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; 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; } -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); 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); 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.entityid = nn_hton_entityid (g.entityid); 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.entityid = nn_ntoh_entityid (g.entityid); diff --git a/src/core/ddsi/src/q_ddsi_discovery.c b/src/core/ddsi/src/q_ddsi_discovery.c index 5b799d1..0491f7c 100644 --- a/src/core/ddsi/src/q_ddsi_discovery.c +++ b/src/core/ddsi/src/q_ddsi_discovery.c @@ -352,7 +352,7 @@ int spdp_dispose_unregister (struct participant *pp) 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 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); } -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 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) { struct q_globals * const gv = rst->gv; - nn_guid_t guid; + ddsi_guid_t guid; if (!(gv->logconfig.c.mask & DDS_LC_DISCOVERY)) 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); } -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 proxy_participant *pp; @@ -469,7 +469,7 @@ static struct proxy_participant *find_ddsi2_proxy_participant (const struct epha 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 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; unsigned 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; 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.entityid.u = NN_ENTITYID_PARTICIPANT; 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)); /* 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 ( - 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 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"; } -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; 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); } -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) struct q_globals * const gv = rst->gv; struct proxy_participant *pp; struct proxy_writer * pwr = NULL; struct proxy_reader * prd = NULL; - nn_guid_t ppguid; + ddsi_guid_t ppguid; dds_qos_t *xqos; int reliable; struct addrset *as; @@ -1466,7 +1466,7 @@ int sedp_write_cm_participant (struct participant *pp, int alive) 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; 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 proxy_writer *pwr; @@ -1564,7 +1564,7 @@ int builtins_dqueue_handler (const struct nn_rsample_info *sampleinfo, const str } keyhash_payload; unsigned statusinfo; int need_keyhash; - nn_guid_t srcguid; + ddsi_guid_t srcguid; Data_DataFrag_common_t *msg; unsigned char data_smhdr_flags; nn_plist_t qos; diff --git a/src/core/ddsi/src/q_entity.c b/src/core/ddsi/src/q_entity.c index 3b76930..34000a4 100644 --- a/src/core/ddsi/src/q_entity.c +++ b/src/core/ddsi/src/q_entity.c @@ -42,7 +42,7 @@ #include "dds/ddsi/ddsi_mcgroup.h" #include "dds/ddsi/q_receive.h" #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__whc.h" @@ -51,7 +51,7 @@ struct deleted_participant { ddsrt_avl_node_t avlnode; - nn_guid_t guid; + ddsi_guid_t guid; unsigned for_what; 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_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_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 struct participant *ref_participant (struct participant *pp, const struct nn_guid *guid_of_refing_entity); -static void unref_participant (struct participant *pp, const struct nn_guid *guid_of_refing_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_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 ddsi_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_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_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 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); 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; 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) { @@ -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) { @@ -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) { @@ -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) 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; } @@ -186,7 +186,7 @@ bool is_local_orphan_endpoint (const struct entity_common *e) 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->kind = kind; @@ -296,6 +296,14 @@ nn_vendorid_t get_entity_vendorid (const struct entity_common *e) 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 --------------------------------------------- */ 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); } -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; 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); } -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; int known; @@ -372,7 +380,7 @@ int is_deleted_participant_guid (struct deleted_participants_admin *admin, const 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; 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; } -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; int ret = 0; @@ -436,17 +444,17 @@ static dds_return_t pp_allocate_entityid(nn_entityid_t *id, uint32_t kind, struc 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); inverse_uint32_set_free(&pp->avail_entityids.x, id.u / NN_ENTITYID_ALLOCSTEP); 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; - nn_guid_t subguid, group_guid; + ddsi_guid_t subguid, group_guid; /* 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); @@ -699,7 +707,7 @@ dds_return_t new_participant_guid (const nn_guid_t *ppguid, struct q_globals *gv 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; 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); } -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.entityid.u = entityid; 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); } -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); if (guid_of_refing_entity && is_builtin_endpoint (guid_of_refing_entity->entityid, NN_VENDORID_ECLIPSE)) pp->builtin_refc++; @@ -751,7 +759,7 @@ static struct participant *ref_participant (struct participant *pp, const struct 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[] = { 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_READER }; - nn_guid_t stguid; + ddsi_guid_t stguid; ddsrt_mutex_lock (&pp->refc_lock); 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); } -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; 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) { - nn_guid_t bwr_guid; + ddsi_guid_t bwr_guid; unsigned bes_mask = 0, prismtech_bes_mask = 0; if (pp->e.onlylocal) { @@ -1387,7 +1395,7 @@ static void free_wr_rd_match (struct wr_rd_match *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; 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 */ 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; 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) { - struct proxy_writer_info pwr_info; - make_proxy_writer_info (&pwr_info, &pwr->e, pwr->c.xqos); - rhc_unregister_wr (rd->rhc, &pwr_info); + struct ddsi_writer_info wrinfo; + ddsi_make_writer_info (&wrinfo, &pwr->e, pwr->c.xqos); + ddsi_rhc_unregister_wr (rd->rhc, &wrinfo); } 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; 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) { /* FIXME: */ - struct proxy_writer_info pwr_info; - make_proxy_writer_info(&pwr_info, &wr->e, wr->xqos); - rhc_unregister_wr (rd->rhc, &pwr_info); + struct ddsi_writer_info wrinfo; + ddsi_make_writer_info (&wrinfo, &wr->e, wr->xqos); + ddsi_rhc_unregister_wr (rd->rhc, &wrinfo); } 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; @@ -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 */ 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; 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); 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; /* 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); - make_proxy_writer_info (&pwr_info, &wr->e, wr->xqos); - (void) rhc_store (rd->rhc, &pwr_info, payload, tk); + ddsi_make_writer_info (&wrinfo, &wr->e, wr->xqos); + (void) ddsi_rhc_store (rd->rhc, &wrinfo, payload, 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; 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); } -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 (xqos2->present & QP_CYCLONE_IGNORELOCAL); @@ -2372,7 +2380,7 @@ static void generic_do_match (struct entity_common *e, nn_mtime_t tnow) else { /* 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; 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), @@ -2385,7 +2393,7 @@ static void generic_do_match (struct entity_common *e, nn_mtime_t tnow) ephash_enum_init (&est, guid_hash, pkind); 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.entityid = tgt_ent; 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 --------------------------------------------------------- */ -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_suffix = ""; @@ -2478,7 +2486,7 @@ static void new_reader_writer_common (const struct ddsrt_log_cfg *logcfg, const 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); 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); } -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; 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; } -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; 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); } -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 writer *wr; nn_mtime_t tnow = now_mt (); @@ -3073,7 +3081,7 @@ dds_return_t delete_writer_nolinger_locked (struct writer *wr) 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; /* 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); } -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 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 ( struct reader **rd_out, - const struct nn_guid *guid, - const struct nn_guid *group_guid, + 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 rhc *rhc, + struct ddsi_rhc *rhc, status_cb_t status_cb, void * status_entity ) @@ -3311,7 +3319,7 @@ static dds_return_t new_reader_guid /* set rhc qos for reader */ if (rhc) { - rhc_set_qos (rd->rhc, rd->xqos); + ddsi_rhc_set_qos (rd->rhc, rd->xqos); } assert (rd->xqos->present & QP_LIVELINESS); 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 q_globals *gv, - struct nn_guid *rdguid, - const struct nn_guid *group_guid, - const struct nn_guid *ppguid, + 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 rhc * rhc, + struct ddsi_rhc * rhc, status_cb_t status_cb, void * status_cbarg ) @@ -3452,7 +3460,7 @@ static void gc_delete_reader (struct gcreq *gcreq) #endif if (rd->rhc) { - rhc_free (rd->rhc); + ddsi_rhc_free (rd->rhc); } if (rd->status_cb) { @@ -3470,7 +3478,7 @@ static void gc_delete_reader (struct gcreq *gcreq) 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; assert (!is_writer_entityid (guid->entityid)); @@ -3533,10 +3541,10 @@ void proxy_participant_reassign_lease (struct proxy_participant *proxypp, struct void new_proxy_participant ( struct q_globals *gv, - const struct nn_guid *ppguid, + const struct ddsi_guid *ppguid, unsigned 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_meta, const nn_plist_t *plist, @@ -3685,7 +3693,7 @@ void new_proxy_participant const struct bestab *te = &bestab[i]; 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.entityid.u = te->entityid; 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); } -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; @@ -3971,7 +3979,7 @@ int delete_proxy_participant_by_guid (struct q_globals *gv, const struct nn_guid 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 entity_common *e; @@ -3985,7 +3993,7 @@ uint64_t get_entity_instance_id (const struct q_globals *gv, const struct nn_gui /* 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; @@ -4020,7 +4028,7 @@ static void proxy_endpoint_common_fini (struct entity_common *e, struct proxy_en /* 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_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) { struct prd_wr_match * m; - nn_guid_t wrguid; + ddsi_guid_t 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) { struct prd_wr_match *next; - nn_guid_t guid_next; + ddsi_guid_t guid_next; struct writer * wr; wrguid = m->wr_guid; @@ -4229,7 +4237,7 @@ static void gc_delete_proxy_writer (struct gcreq *gcreq) 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; (void)isimplicit; @@ -4256,7 +4264,7 @@ int delete_proxy_writer (struct q_globals *gv, const struct nn_guid *guid, nn_wc /* 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 , int favours_ssm #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) { - nn_guid_t wrguid; + ddsi_guid_t wrguid; struct writer *wr; 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 I want to check this before I write a lookup_succ function. */ struct prd_wr_match *m_a_next; - nn_guid_t wrguid_next; + ddsi_guid_t wrguid_next; wrguid = m->wr_guid; if ((m_a_next = ddsrt_avl_find_succ (&prd_writers_treedef, &prd->writers, m)) != NULL) wrguid_next = m_a_next->wr_guid; @@ -4362,7 +4370,7 @@ static void gc_delete_proxy_reader (struct gcreq *gcreq) 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; (void)isimplicit; diff --git a/src/core/ddsi/src/q_ephash.c b/src/core/ddsi/src/q_ephash.c index 0a106be..0e30e0b 100644 --- a/src/core/ddsi/src/q_ephash.c +++ b/src/core/ddsi/src/q_ephash.c @@ -113,7 +113,7 @@ static void ephash_guid_remove (struct ephash *gh, struct entity_common *e) 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 */ 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); } -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; 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; } -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); } @@ -196,42 +196,42 @@ void ephash_remove_proxy_reader_guid (struct ephash *gh, struct proxy_reader *pr 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 (offsetof (struct participant, e) == 0); 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 (offsetof (struct proxy_participant, e) == 0); 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 (offsetof (struct writer, e) == 0); 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 (offsetof (struct reader, e) == 0); 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 (offsetof (struct proxy_writer, e) == 0); 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 (offsetof (struct proxy_reader, e) == 0); diff --git a/src/core/ddsi/src/q_lease.c b/src/core/ddsi/src/q_lease.c index 85ccc92..4015085 100644 --- a/src/core/ddsi/src/q_lease.c +++ b/src/core/ddsi/src/q_lease.c @@ -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); 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; 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 int bswap = (data->identifier == CDR_LE) ^ (DDSRT_ENDIAN == DDSRT_LITTLE_ENDIAN); struct proxy_participant *pp; - nn_guid_t ppguid; + ddsi_guid_t ppguid; RSTTRACE (" PMD ST%x", statusinfo); 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 { 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 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); @@ -346,11 +346,11 @@ void handle_PMD (const struct receiver_state *rst, nn_wctime_t timestamp, uint32 case NN_STATUSINFO_DISPOSE | NN_STATUSINFO_UNREGISTER: /* Serialized key; BE or LE doesn't matter as both fields are 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); 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; if (delete_proxy_participant_by_guid (rst->gv, &ppguid, timestamp, 0) < 0) RSTTRACE (" unknown"); diff --git a/src/core/ddsi/src/q_plist.c b/src/core/ddsi/src/q_plist.c index 6714bda..aea2807 100644 --- a/src/core/ddsi/src/q_plist.c +++ b/src/core/ddsi/src/q_plist.c @@ -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 Xb: case Xbx2: SIMPLE (Xb, 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; } desc++; @@ -492,7 +492,7 @@ static dds_return_t deser_generic (void * __restrict dst, size_t * __restrict ds break; } 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)) goto fail; 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 Xb: case Xbx2: SIMPLE1 (Xb, 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; } desc++; @@ -679,8 +679,8 @@ static dds_return_t ser_generic (struct nn_xmsg *xmsg, nn_parameterid_t pid, con break; } case XG: { /* GUID */ - nn_guid_t const * const x = deser_generic_src (src, &srcoff, alignof (nn_guid_t)); - const nn_guid_t xn = nn_hton_guid (*x); + ddsi_guid_t const * const x = deser_generic_src (src, &srcoff, alignof (ddsi_guid_t)); + const ddsi_guid_t xn = nn_hton_guid (*x); char * const p = data + dstoff; memcpy (p, &xn, 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 Xb: case Xbx2: SIMPLE (Xb, 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; } 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 Xb: case Xbx2: SIMPLE (Xb, 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; } desc++; @@ -857,7 +857,7 @@ static bool equal_generic (const void *srcx, const void *srcy, size_t srcoff, co return true; }); 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; } 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) { - const nn_guid_t *g = dst; + const ddsi_guid_t *g = dst; (void) dd; 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; @@ -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) { - const nn_guid_t *g = dst; + const ddsi_guid_t *g = dst; (void) dd; 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; @@ -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) { - 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) return (g->entityid.u == 0) ? 0 : DDS_RETCODE_BAD_PARAMETER; switch (g->entityid.u & NN_ENTITYID_KIND_MASK) diff --git a/src/core/ddsi/src/q_radmin.c b/src/core/ddsi/src/q_radmin.c index 46578cc..d553510 100644 --- a/src/core/ddsi/src/q_radmin.c +++ b/src/core/ddsi/src/q_radmin.c @@ -2407,7 +2407,7 @@ struct nn_dqueue_bubble { void *arg; } cb; struct { - nn_guid_t rdguid; + ddsi_guid_t rdguid; uint32_t count; } rdguid; } 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); nn_mtime_t next_thread_cputime = { 0 }; int keepgoing = 1; - nn_guid_t rdguid, *prdguid = NULL; + ddsi_guid_t rdguid, *prdguid = NULL; uint32_t rdguid_count = 0; 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); } -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; diff --git a/src/core/ddsi/src/q_receive.c b/src/core/ddsi/src/q_receive.c index a40385c..f877606 100644 --- a/src/core/ddsi/src/q_receive.c +++ b/src/core/ddsi/src/q_receive.c @@ -44,7 +44,7 @@ #include "dds/ddsi/q_entity.h" #include "dds/ddsi/q_xmsg.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_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) { @@ -285,7 +285,7 @@ static int valid_NackFrag (NackFrag_t *msg, size_t size, int byteswap) 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); 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) { /* 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; 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 */ uint32_t payloadsz; - nn_guid_t pwr_guid; + ddsi_guid_t pwr_guid; unsigned char *ptr; 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 wr_prd_match *rn; struct writer *wr; - nn_guid_t src, dst; + ddsi_guid_t src, dst; seqno_t seqbase; seqno_t seq_xmit; nn_count_t *countp; @@ -991,7 +991,7 @@ static int handle_AckNack (struct receiver_state *rst, nn_etime_t tnow, const Ac 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: 0 0 all matched readers @@ -1023,7 +1023,7 @@ static void handle_forall_destinations (const nn_guid_t *dst, struct proxy_write break; 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; b = *dst; b.entityid.u = ~0u; 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); struct handle_Heartbeat_helper_arg arg; struct proxy_writer *pwr; - nn_guid_t src, dst; + ddsi_guid_t src, dst; src.prefix = rst->src_guid_prefix; 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 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; 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 writer *wr; struct whc_borrowed_sample sample; - nn_guid_t src, dst; + ddsi_guid_t src, dst; nn_count_t *countp; 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; } -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); 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 { - nn_guid_t dst; + ddsi_guid_t dst; dst.prefix = rst->dst_guid_prefix; dst.entityid = to_entityid(NN_ENTITYID_PARTICIPANT); 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 pwr_rd_match *wn; - nn_guid_t src, dst; + ddsi_guid_t src, dst; seqno_t gapstart, listbase; int32_t last_included_rel; 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) { 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 an error path, it doesn't hurt to survive that */ 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 */ 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)); DDS_CWARNING (&gv->logconfig, "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) { const struct proxy_writer *pwr = sampleinfo->pwr; - nn_guid_t guid; + ddsi_guid_t guid; char tmp[1024]; size_t res = 0; tmp[0] = 0; @@ -1884,7 +1884,7 @@ static struct reader *proxy_writer_next_in_sync_reader (struct proxy_writer *pwr 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 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? */ const nn_wctime_t tstamp = (sampleinfo->timestamp.v != NN_WCTIME_INVALID.v) ? sampleinfo->timestamp : ((nn_wctime_t) {0}); - struct proxy_writer_info pwr_info; - make_proxy_writer_info (&pwr_info, &pwr->e, pwr->c.xqos); + struct ddsi_writer_info wrinfo; + ddsi_make_writer_info (&wrinfo, &pwr->e, pwr->c.xqos); if (rdguid == NULL) { @@ -1978,7 +1978,7 @@ static int deliver_user_data (const struct nn_rsample_info *sampleinfo, const st ETRACE (pwr, " => EVERYONE\n"); uint32_t i = 0; 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); 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, " =>"); do { 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); } while (rd != NULL); 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 "awake" (although a delete can be initiated), and blocking like this is a stopgap 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); dds_sleepfor (DDS_MSECS (1)); @@ -2065,14 +2065,14 @@ static int deliver_user_data (const struct nn_rsample_info *sampleinfo, const st 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; res = deliver_user_data (sampleinfo, fragchain, rdguid, 0); 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) { @@ -2113,7 +2113,7 @@ static void handle_regular (struct receiver_state *rst, nn_etime_t tnow, struct { struct proxy_writer *pwr; struct nn_rsample *rsample; - nn_guid_t dst; + ddsi_guid_t dst; dst.prefix = rst->dst_guid_prefix; dst.entityid = msg->readerId; @@ -2121,7 +2121,7 @@ static void handle_regular (struct receiver_state *rst, nn_etime_t tnow, struct pwr = sampleinfo->pwr; if (pwr == NULL) { - nn_guid_t src; + ddsi_guid_t src; src.prefix = rst->src_guid_prefix; src.entityid = msg->writerId; 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. */ int refc_adjust = 0; struct nn_rdata *gap = nn_rdata_newgap (rmsg); - nn_guid_t dst; + ddsi_guid_t dst; struct pwr_rd_match *wn; int gap_was_valuable; @@ -2627,8 +2627,8 @@ static int handle_submsg_sequence const nn_locator_t *srcloc, nn_wctime_t tnowWC, nn_etime_t tnowE, - const nn_guid_prefix_t * const src_prefix, - const nn_guid_prefix_t * const dst_prefix, + const ddsi_guid_prefix_t * const src_prefix, + const ddsi_guid_prefix_t * const dst_prefix, unsigned char * const msg /* NOT const - we may byteswap it */, const size_t len, unsigned char * submsg /* aliases somewhere in msg */, @@ -2937,7 +2937,7 @@ malformed_asleep: 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 */ @@ -3057,7 +3057,7 @@ static bool do_packet (struct thread_state1 * const ts1, struct q_globals *gv, d struct local_participant_desc { 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) @@ -3409,7 +3409,7 @@ uint32_t recv_thread (void *vrecv_thread_arg) ddsi_tran_conn_t conn; 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) guid_prefix = NULL; else diff --git a/src/core/ddsi/src/q_rhc.c b/src/core/ddsi/src/q_rhc.c deleted file mode 100644 index 187521f..0000000 --- a/src/core/ddsi/src/q_rhc.c +++ /dev/null @@ -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; -} diff --git a/src/core/ddsi/src/q_transmit.c b/src/core/ddsi/src/q_transmit.c index 7b56ad9..2725a3f 100644 --- a/src/core/ddsi/src/q_transmit.c +++ b/src/core/ddsi/src/q_transmit.c @@ -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 nn_xmsg *msg; - const nn_guid_t *prd_guid; + const ddsi_guid_t *prd_guid; ASSERT_MUTEX_HELD (&wr->e.lock); assert (wr->reliable); @@ -313,7 +313,7 @@ struct nn_xmsg *writer_hbcontrol_piggyback (struct writer *wr, const struct whc_ 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 nn_xmsg_marker sm_marker; diff --git a/src/core/ddsi/src/q_xevent.c b/src/core/ddsi/src/q_xevent.c index e38361a..7f0195b 100644 --- a/src/core/ddsi/src/q_xevent.c +++ b/src/core/ddsi/src/q_xevent.c @@ -68,26 +68,26 @@ struct xevent enum xeventkind kind; union { struct { - nn_guid_t wr_guid; + ddsi_guid_t wr_guid; } heartbeat; struct { - nn_guid_t pwr_guid; - nn_guid_t rd_guid; + ddsi_guid_t pwr_guid; + ddsi_guid_t rd_guid; } acknack; struct { - nn_guid_t pp_guid; - nn_guid_prefix_t dest_proxypp_guid_prefix; /* only if "directed" */ + ddsi_guid_t pp_guid; + 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 */ } spdp; struct { - nn_guid_t pp_guid; + ddsi_guid_t pp_guid; } pmd_update; #if 0 struct { } info; #endif struct { - nn_guid_t guid; + ddsi_guid_t guid; } delete_writer; struct { 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)); } -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 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 { - nn_guid_t guid; + ddsi_guid_t guid; guid.prefix = ev->u.spdp.dest_proxypp_guid_prefix; guid.entityid.u = NN_ENTITYID_SPDP_BUILTIN_PARTICIPANT_READER; 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); } -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 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 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 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; } -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; assert(evq); @@ -1516,7 +1516,7 @@ struct xevent *qxev_acknack (struct xeventq *evq, nn_mtime_t tsched, const nn_gu 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; 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; } -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; 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; } -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; ddsrt_mutex_lock (&evq->lock); diff --git a/src/core/ddsi/src/q_xmsg.c b/src/core/ddsi/src/q_xmsg.c index 3e34458..e9ec8e6 100644 --- a/src/core/ddsi/src/q_xmsg.c +++ b/src/core/ddsi/src/q_xmsg.c @@ -83,7 +83,7 @@ struct nn_xmsg { union { char control; struct { - nn_guid_t wrguid; + ddsi_guid_t wrguid; seqno_t wrseq; nn_fragment_number_t wrfragid; /* readerId encodes offset to destination readerId or 0 -- used @@ -191,7 +191,7 @@ struct nn_xpack bool async_mode; Header_t hdr; MsgLen_t msg_len; - nn_guid_prefix_t *last_src; + ddsi_guid_prefix_t *last_src; InfoDST_t *last_dst; int64_t maxdelay; unsigned packetid; @@ -329,7 +329,7 @@ static struct nn_xmsg *nn_xmsg_allocnew (struct nn_xmsgpool *pool, size_t expect 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; 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; } -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); *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); 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); } -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->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->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)); } -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->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) { - nn_entityid_t e = load_readerId (m); - nn_entityid_t eadd = load_readerId (madd); + ddsi_entityid_t e = load_readerId (m); + ddsi_entityid_t eadd = load_readerId (madd); 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 -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.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); 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) { - nn_guid_t wrguid; + ddsi_guid_t wrguid; memset (&wrguid, 0, sizeof (wrguid)); 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); } -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]; } @@ -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 */ struct q_globals const * const gv = xp->gv; 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 } } }; InfoDST_t *dst; diff --git a/src/core/xtests/rhc_torture/rhc_torture.c b/src/core/xtests/rhc_torture/rhc_torture.c index 5dba7b4..3c1095c 100644 --- a/src/core/xtests/rhc_torture/rhc_torture.c +++ b/src/core/xtests/rhc_torture/rhc_torture.c @@ -30,7 +30,7 @@ #include "dds/ddsi/q_gc.h" #include "dds/ddsi/ddsi_serdata.h" #include "dds__topic.h" -#include "dds__rhc.h" +#include "dds/ddsc/dds_rhc.h" #include "dds__rhc_default.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 */ 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 */ thread_state_awake_domain_ok (lookup_thread_state ()); 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: { 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.guid = wr[which]->e.guid; wr_info.iid = wr[which]->e.iid; @@ -890,7 +890,7 @@ int main (int argc, char **argv) }; rdall (rhc, c1, print, states_seen); 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.guid = wr0->e.guid; wr0_info.iid = wr0->e.iid;