diff --git a/src/core/ddsc/src/dds_psmx.c b/src/core/ddsc/src/dds_psmx.c index 7f613984d9..20f52beed7 100644 --- a/src/core/ddsc/src/dds_psmx.c +++ b/src/core/ddsc/src/dds_psmx.c @@ -327,40 +327,32 @@ static dds_return_t psmx_instance_load (const struct ddsi_domaingv *gv, const st return ret; } -static int compare_psmx_prio (const void *va, const void *vb) -{ - const struct dds_psmx *psmx1 = va; - const struct dds_psmx *psmx2 = vb; - return (psmx1->priority == psmx2->priority) ? 0 : ((psmx1->priority < psmx2->priority) ? 1 : -1); -} - dds_return_t dds_pubsub_message_exchange_init (const struct ddsi_domaingv *gv, struct dds_domain *domain) { dds_return_t ret = DDS_RETCODE_OK; if (gv->config.psmx_instances != NULL) { struct ddsi_config_psmx_listelem *iface = gv->config.psmx_instances; - while (iface && domain->psmx_instances.length < DDS_MAX_PSMX_INSTANCES) - { - GVLOG(DDS_LC_INFO, "Loading PSMX instances %s\n", iface->cfg.name); - struct dds_psmx *psmx = NULL; - ddsrt_dynlib_t lib_handle; - if (psmx_instance_load (gv, &iface->cfg, &psmx, &lib_handle) == DDS_RETCODE_OK) - { - domain->psmx_instances.instances[domain->psmx_instances.length] = psmx; - domain->psmx_instances.lib_handles[domain->psmx_instances.length] = lib_handle; - domain->psmx_instances.length++; - } - else - { - GVERROR ("error loading PSMX instance \"%s\"\n", iface->cfg.name); - ret = DDS_RETCODE_ERROR; - break; + if ( iface != NULL ) { + if ( iface->next != NULL ) { + ret = DDS_RETCODE_UNSUPPORTED; // Only one psmx interface is supported. + }else{ + GVLOG(DDS_LC_INFO, "Loading PSMX instances %s\n", iface->cfg.name); + struct dds_psmx *psmx = NULL; + ddsrt_dynlib_t lib_handle; + if (psmx_instance_load (gv, &iface->cfg, &psmx, &lib_handle) == DDS_RETCODE_OK) + { + domain->psmx_instances.instances[domain->psmx_instances.length] = psmx; + domain->psmx_instances.lib_handles[domain->psmx_instances.length] = lib_handle; + domain->psmx_instances.length++; + } + else + { + GVERROR ("error loading PSMX instance \"%s\"\n", iface->cfg.name); + ret = DDS_RETCODE_ERROR; + } } - iface = iface->next; } - - qsort (domain->psmx_instances.instances, domain->psmx_instances.length, sizeof (*domain->psmx_instances.instances), compare_psmx_prio); } return ret; } diff --git a/src/core/ddsc/tests/CMakeLists.txt b/src/core/ddsc/tests/CMakeLists.txt index c10d9e9a30..b54e40ad0f 100644 --- a/src/core/ddsc/tests/CMakeLists.txt +++ b/src/core/ddsc/tests/CMakeLists.txt @@ -159,15 +159,10 @@ if(ENABLE_QOS_PROVIDER) endif() # PSMX dummy implementation for interface testing -set( - psmx_dummy_sources - "psmx_dummy_impl.c" - "psmx_dummy_impl.h" -) if(BUILD_SHARED_LIBS) - add_library(psmx_dummy SHARED ${psmx_dummy_sources}) + add_library(psmx_dummy SHARED "psmx_dummy_impl.c") else() - add_library(psmx_dummy OBJECT ${psmx_dummy_sources}) + add_library(psmx_dummy OBJECT "psmx_dummy_impl.c") set_property(GLOBAL APPEND PROPERTY cdds_plugin_list psmx_dummy) set_property(GLOBAL PROPERTY psmx_dummy_symbols dummy_create_psmx) endif() @@ -199,6 +194,7 @@ add_cunit_executable(cunit_ddsc ${ddsc_test_sources}) target_include_directories( cunit_ddsc PRIVATE "$" + "$" "$" "$" "$" diff --git a/src/core/ddsc/tests/psmx_dummy_public.h b/src/core/ddsc/tests/psmx_dummy_public.h index 3037900726..176ec63f4a 100644 --- a/src/core/ddsc/tests/psmx_dummy_public.h +++ b/src/core/ddsc/tests/psmx_dummy_public.h @@ -12,6 +12,8 @@ #ifndef PSMX_DUMMY_PUBLIC_H #define PSMX_DUMMY_PUBLIC_H +#include "dds/psmx_dummy/export.h" + #if defined (__cplusplus) extern "C" { #endif @@ -58,9 +60,9 @@ typedef struct dummy_mockstats_s{ dds_loaned_sample_t* write_rcv_loan; }dummy_mockstats_t; -DDS_EXPORT dummy_mockstats_t* dummy_mockstats_get_ptr(void); -DDS_EXPORT void dummy_topics_alloc(dummy_mockstats_t* mockstats, size_t topics_capacity); -DDS_EXPORT void dummy_endpoints_alloc(dummy_mockstats_t* mockstats, size_t endpoints_capacity); +PSMX_DUMMY_EXPORT dummy_mockstats_t* dummy_mockstats_get_ptr(void); +PSMX_DUMMY_EXPORT void dummy_topics_alloc(dummy_mockstats_t* mockstats, size_t topics_capacity); +PSMX_DUMMY_EXPORT void dummy_endpoints_alloc(dummy_mockstats_t* mockstats, size_t endpoints_capacity); #if defined (__cplusplus) } diff --git a/src/core/ddsc/tests/psmxif.c b/src/core/ddsc/tests/psmxif.c index f5c98ff9e0..cdccc554a0 100644 --- a/src/core/ddsc/tests/psmxif.c +++ b/src/core/ddsc/tests/psmxif.c @@ -149,6 +149,7 @@ CU_Test(ddsc_psmxif, config_multiple_psmx) configstr_in = ddsrt_expand_envvars(configstr, domainId); } const dds_entity_t domain = dds_create_domain (domainId, configstr_in); + ddsrt_free(configstr_in); CU_ASSERT_FATAL(domain <= 0); }