Skip to content

Commit

Permalink
Add ENABLE_TYPELIB build option
Browse files Browse the repository at this point in the history
This adds the ENABLE_TYPELIB build option (default is ON) that controls
including the type library (which stores the type meta-data for types
used in local entities and in discovered proxy entities). The
ENABLE_TYPELIB also controls the availability of the type-builder (to
construct the type meta-data used by the serialized, e.g. used from the
Python API) and the dynamic type API.

Most of the functionality that can be disabled/enabled with this option
was previously controlled by the ENABLE_TYPE_DISCOVERY build option.
That option is also still available, but now only controls the inclusion
of the type lookup functionality (that allows resolving type meta-data for
types from discovery endpoints or topics).

Signed-off-by: Dennis Potman <[email protected]>
  • Loading branch information
dpotman committed Jul 27, 2023
1 parent aee37ee commit c1c07c7
Show file tree
Hide file tree
Showing 61 changed files with 1,483 additions and 1,224 deletions.
1 change: 1 addition & 0 deletions .azure/templates/build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ steps:
-DENABLE_LIFESPAN=${LIFESPAN:-on} \
-DENABLE_DEADLINE_MISSED=${DEADLINE_MISSED:-on} \
-DSKIP_DEADLINE_UPDATE={DEADLINE_UPDATE_SKIP:-off} \
-DENABLE_TYPELIB=${TYPELIB:-on} \
-DENABLE_TYPE_DISCOVERY=${TYPE_DISCOVERY:-on} \
-DENABLE_TOPIC_DISCOVERY=${TOPIC_DISCOVERY:-on} \
-DENABLE_COVERAGE=${COVERAGE:-off} \
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ There are some configuration options specified using CMake defines in addition t
* `-DENABLE_SECURITY=NO`: to not build the security interfaces and hooks in the core code, nor the plugins (one can enable security without OpenSSL present, you'll just have to find plugins elsewhere in that case)
* `-DENABLE_LIFESPAN=NO`: to exclude support for finite lifespans QoS
* `-DENABLE_DEADLINE_MISSED=NO`: to exclude support for finite deadline QoS settings
* `-DENABLE_TYPELIB=NO`: to exclude support for type library, requires also disabling type and topic discovery using `-DENABLE_TYPE_DISCOVERY=NO` and `-DENABLE_TOPIC_DISCOVERY=NO`
* `-DENABLE_TYPE_DISCOVERY=NO`: to exclude support for type discovery and checking type compatibility (effectively most of XTypes), requires also disabling topic discovery using `-DENABLE_TOPIC_DISCOVERY=NO`
* `-DENABLE_TOPIC_DISCOVERY=NO`: to exclude support for topic discovery
* `-DENABLE_SOURCE_SPECIFIC_MULTICAST=NO`: to disable support for source-specific multicast (disabling this and `-DENABLE_IPV6=NO` may be needed for QNX builds)
Expand Down
35 changes: 19 additions & 16 deletions docs/manual/config/cmake_config.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
CMake build configuration
#########################

The following table lists some configuration options specified using CMake defines (in
The following table lists some configuration options specified using CMake defines (in
addition to the standard options such as ``CMAKE_BUILD_TYPE``):

.. list-table::
Expand All @@ -24,33 +24,36 @@ addition to the standard options such as ``CMAKE_BUILD_TYPE``):
* - ``-DBUILD_DDSPERF=NO``
- Disable building the :ref:`dsperf_tool` (|url::ddsperf_github|) tool for performance measurement.
* - ``-DENABLE_SSL=NO``
- Do not look for OpenSSL, remove TLS/TCP support and avoid building the plugins that
- Do not look for OpenSSL, remove TLS/TCP support and avoid building the plugins that
implement authentication and encryption (default is ``AUTO`` to enable them if OpenSSL is found)
* - ``-DENABLE_SHM=NO``
- Do not look for |url::iceoryx_link| and disable :ref:`shared_memory` (default
- Do not look for |url::iceoryx_link| and disable :ref:`shared_memory` (default
is ``AUTO`` to enable it if iceoryx is found)
* - ``-DENABLE_SECURITY=NO``
- Do not build the security interfaces and hooks in the core code, nor the plugins
(you can enable security without OpenSSL present, you'll just have to find
- Do not build the security interfaces and hooks in the core code, nor the plugins
(you can enable security without OpenSSL present, you'll just have to find
plugins elsewhere in that case)
* - ``-DENABLE_LIFESPAN=NO``
- Exclude support for finite lifespans QoS
* - ``-DENABLE_DEADLINE_MISSED=NO``
- Exclude support for finite deadline QoS settings
* - ``-DENABLE_TYPELIB=NO``
- Exclude support for the type library, requires also disabling type and topic discovery using
``-DENABLE_TYPE_DISCOVERY=NO`` and ``-DENABLE_TOPIC_DISCOVERY=NO``
* - ``-DENABLE_TYPE_DISCOVERY=NO``
- Exclude support for type discovery and checking type compatibility
(effectively most of XTypes), requires also disabling topic discovery using
- Exclude support for type discovery and checking type compatibility
(effectively most of XTypes), requires also disabling topic discovery using
``-DENABLE_TOPIC_DISCOVERY=NO``
* - ``-DENABLE_TOPIC_DISCOVERY=NO``
* - ``-DENABLE_TOPIC_DISCOVERY=NO``
- Exclude support for topic discovery
* - ``-DENABLE_SOURCE_SPECIFIC_MULTICAST=NO``
- Disable support for source-specific multicast (disabling this and ``-DENABLE_IPV6=NO``
- Disable support for source-specific multicast (disabling this and ``-DENABLE_IPV6=NO``
may be needed for QNX builds)
* - ``-DENABLE_IPV6=NO``:
- Disable ipv6 support (disabling this and ``-DENABLE_SOURCE_SPECIFIC_MULTICAST=NO``
may be needed for QNX builds)
* - ``-DENABLE_IPV6=NO``:
- Disable ipv6 support (disabling this and ``-DENABLE_SOURCE_SPECIFIC_MULTICAST=NO``
may be needed for QNX builds)
* - ``-DBUILD_IDLC_XTESTS=NO``
- Include a set of tests for the IDL compiler that use the C back-end to compile
an IDL file at (test) runtime, and use the C compiler to build a test
application for the generated types, that is executed to do the actual testing
(not supported on Windows)
- Include a set of tests for the IDL compiler that use the C back-end to compile
an IDL file at (test) runtime, and use the C compiler to build a test
application for the generated types, that is executed to do the actual testing
(not supported on Windows)
2 changes: 1 addition & 1 deletion docs/manual/doxygen.conf.in
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ GENERATE_HTML = NO
GENERATE_LATEX = NO
GENERATE_XML = YES
MACRO_EXPANSION = YES
PREDEFINED = __restrict= __attribute__= __declspec(x)= DDS_EXPORT= DDS_DEPRECATED_EXPORT= DDSRT_STATIC_ASSERT(x)= DOXYGEN_SHOULD_SKIP_THIS=1 DDS_HAS_TOPIC_DISCOVERY=1 DDS_HAS_TYPE_DISCOVERY=1 ddsrt_attribute_warn_unused_result= ddsrt_attribute_malloc= ddsrt_nonnull(x)= ddsrt_attribute_no_sanitize(x)=
PREDEFINED = __restrict= __attribute__= __declspec(x)= DDS_EXPORT= DDS_DEPRECATED_EXPORT= DDSRT_STATIC_ASSERT(x)= DOXYGEN_SHOULD_SKIP_THIS=1 DDS_HAS_TOPIC_DISCOVERY=1 DDS_HAS_TYPELIB=1 DDS_HAS_TYPE_DISCOVERY=1 ddsrt_attribute_warn_unused_result= ddsrt_attribute_malloc= ddsrt_nonnull(x)= ddsrt_attribute_no_sanitize(x)=
CLASS_GRAPH = TEXT
ALIASES += "component=\noop"
ALIASES += "notincomponent=\noop"
Expand Down
4 changes: 2 additions & 2 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ install(
DESTINATION "${CMAKE_INSTALL_EXAMPLESDIR}/throughput"
COMPONENT dev)

if (ENABLE_TYPE_DISCOVERY)
if (ENABLE_TYPELIB)
install(
FILES
dyntype/dyntype.c
Expand Down Expand Up @@ -94,7 +94,7 @@ if (ENABLE_TOPIC_DISCOVERY)
add_subdirectory(listtopics)
add_subdirectory(dynsub)
endif ()
if (ENABLE_TYPE_DISCOVERY)
if (ENABLE_TYPELIB)
add_subdirectory(dyntype)
endif ()
if (ENABLE_SHM)
Expand Down
6 changes: 6 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,14 @@ option(SKIP_DEADLINE_UPDATE "Skip deadline update test" OFF)
option(ENABLE_NETWORK_PARTITIONS "Enable network partition support" ON)
option(ENABLE_SOURCE_SPECIFIC_MULTICAST "Enable support for source-specific multicast" ON)
option(ENABLE_IPV6 "Enable ipv6 support" ON)
option(ENABLE_TYPELIB "Enable Type Library support" ON)
option(ENABLE_TYPE_DISCOVERY "Enable Type Discovery support" ON)
option(ENABLE_TOPIC_DISCOVERY "Enable Topic Discovery support" ON)
if(ENABLE_TYPE_DISCOVERY)
if(NOT ENABLE_TYPELIB)
message(FATAL_ERROR "ENABLE_TYPE_DISCOVERY requires ENABLE_TYPELIB to be enabled")
endif()
endif()
if(ENABLE_TOPIC_DISCOVERY)
if(NOT ENABLE_TYPE_DISCOVERY)
message(FATAL_ERROR "ENABLE_TOPIC_DISCOVERY requires ENABLE_TYPE_DISCOVERY to be enabled")
Expand Down
13 changes: 13 additions & 0 deletions src/core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,19 @@ set_target_properties(ddsc PROPERTIES
set_target_properties(ddsc PROPERTIES EXPORT_PROPERTIES
"SHM_SUPPORT_IS_AVAILABLE")

# define target property to indicate if Cyclone DDS is compiled with type library support
define_property(TARGET
PROPERTY TYPELIB_IS_AVAILABLE
BRIEF_DOCS "Indicator whether type library is available with current Cyclone DDS build configuration."
FULL_DOCS "Indicator whether type library is available with current Cyclone DDS build configuration."
)
set_property(
TARGET ddsc
APPEND PROPERTY TYPELIB_IS_AVAILABLE "${ENABLE_TYPELIB}")
set_property(
TARGET ddsc
APPEND PROPERTY EXPORT_PROPERTIES "TYPELIB_IS_AVAILABLE")

# define target property to indicate if Cyclone DDS is compiled with type discovery
define_property(TARGET
PROPERTY TYPE_DISCOVERY_IS_AVAILABLE
Expand Down
4 changes: 2 additions & 2 deletions src/core/ddsc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ prepend(srcs_ddsc "${CMAKE_CURRENT_LIST_DIR}/src/"
dds_loan.c
)

if(ENABLE_TYPE_DISCOVERY)
if(ENABLE_TYPELIB)
list(APPEND srcs_ddsc "${CMAKE_CURRENT_LIST_DIR}/src/dds_dynamic_type.c")
endif()

Expand Down Expand Up @@ -100,7 +100,7 @@ prepend(hdrs_public_ddsc "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>$<
ddsc/dds_data_allocator.h
ddsc/dds_loan_api.h)

if(ENABLE_TYPE_DISCOVERY)
if(ENABLE_TYPELIB)
list(APPEND hdrs_public_ddsc "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>/dds/ddsc/dds_public_dynamic_type.h")
endif()

Expand Down
9 changes: 5 additions & 4 deletions src/core/ddsc/include/dds/dds.h
Original file line number Diff line number Diff line change
Expand Up @@ -4573,7 +4573,7 @@ dds_get_matched_publication_data (
dds_entity_t reader,
dds_instance_handle_t ih);

#ifdef DDS_HAS_TYPE_DISCOVERY
#ifdef DDS_HAS_TYPELIB
/**
* @brief Gets the type information from endpoint information that was
* retrieved by dds_get_matched_subscription_data or
Expand All @@ -4595,7 +4595,8 @@ DDS_EXPORT dds_return_t
dds_builtintopic_get_endpoint_type_info (
dds_builtintopic_endpoint_t * builtintopic_endpoint,
const dds_typeinfo_t ** type_info);
#endif

#endif /* DDS_HAS_TYPELIB */

/**
* @brief Free the endpoint information that was retrieved by
Expand Down Expand Up @@ -4808,7 +4809,7 @@ dds_free_typeobj (
* The operation is invoked on an inappropriate object.
* @retval DDS_RETCODE_UNSUPPORTED
* Cyclone DDS built without type discovery
* (cf. DDS_HAS_TYPE_DISCOVERY)
* (cf. DDS_HAS_TYPELIB)
*/
DDS_EXPORT dds_return_t
dds_get_typeinfo (
Expand All @@ -4831,7 +4832,7 @@ dds_get_typeinfo (
* The type_info parameter is NULL
* @retval DDS_RETCODE_UNSUPPORTED
* Cyclone DDS built without type discovery
* (cf. DDS_HAS_TYPE_DISCOVERY)
* (cf. DDS_HAS_TYPELIB)
*/
DDS_EXPORT dds_return_t
dds_free_typeinfo (
Expand Down
2 changes: 2 additions & 0 deletions src/core/ddsc/src/dds_builtin.c
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,8 @@ bool dds__validate_builtin_reader_qos (const dds_domain *dom, dds_entity_t topic
dds_qos_policy_id_t dummy;
#ifdef DDS_HAS_TYPE_DISCOVERY
return ddsi_qos_match_mask_p (bwr->wr.e.gv, qos, bwr->wr.xqos, qmask, &dummy, NULL, NULL, NULL, NULL) && !qos_has_resource_limits (qos);
#elif DDS_HAS_TYPELIB
return ddsi_qos_match_mask_p (bwr->wr.e.gv, qos, bwr->wr.xqos, qmask, &dummy, NULL, NULL) && !qos_has_resource_limits (qos);
#else
return ddsi_qos_match_mask_p (bwr->wr.e.gv, qos, bwr->wr.xqos, qmask, &dummy) && !qos_has_resource_limits (qos);
#endif
Expand Down
10 changes: 7 additions & 3 deletions src/core/ddsc/src/dds_entity.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@
#include "dds/ddsi/ddsi_endpoint.h"
#include "dds/ddsi/ddsi_sertype.h"

#ifdef DDS_HAS_TYPELIB
#include "dds/ddsi/ddsi_typelib.h"
#endif

extern inline dds_entity *dds_entity_from_handle_link (struct dds_handle_link *hdllink);
extern inline bool dds_entity_is_enabled (const dds_entity *e);
extern inline void dds_entity_status_reset (dds_entity *e, status_mask_t t);
Expand Down Expand Up @@ -1629,7 +1633,7 @@ dds_return_t dds_return_loan (dds_entity_t entity, void **buf, int32_t bufsz)
return ret;
}

#ifdef DDS_HAS_TYPE_DISCOVERY
#ifdef DDS_HAS_TYPELIB

dds_return_t dds_get_typeinfo (dds_entity_t entity, dds_typeinfo_t **type_info)
{
Expand Down Expand Up @@ -1677,7 +1681,7 @@ dds_return_t dds_free_typeinfo (dds_typeinfo_t *type_info)
return DDS_RETCODE_OK;
}

#else
#else /* DDS_HAS_TYPELIB */

dds_return_t dds_get_typeinfo (dds_entity_t entity, dds_typeinfo_t **type_info)
{
Expand All @@ -1692,7 +1696,7 @@ dds_return_t dds_free_typeinfo (dds_typeinfo_t *type_info)
return DDS_RETCODE_UNSUPPORTED;
}

#endif /* DDS_HAS_TYPE_DISCOVERY */
#endif /* DDS_HAS_TYPELIB */


dds_return_t dds_get_entity_sertype (dds_entity_t entity, const struct ddsi_sertype **sertype)
Expand Down
6 changes: 4 additions & 2 deletions src/core/ddsc/src/dds_matched.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,8 @@ dds_builtintopic_endpoint_t *dds_get_matched_publication_data (dds_entity_t read
return ret;
}

#ifdef DDS_HAS_TYPE_DISCOVERY
#ifdef DDS_HAS_TYPELIB

dds_return_t dds_builtintopic_get_endpoint_type_info (dds_builtintopic_endpoint_t * builtintopic_endpoint, const dds_typeinfo_t ** type_info)
{
if (builtintopic_endpoint == NULL || type_info == NULL)
Expand All @@ -132,7 +133,8 @@ dds_return_t dds_builtintopic_get_endpoint_type_info (dds_builtintopic_endpoint_
*type_info = NULL;
return DDS_RETCODE_OK;
}
#endif

#endif /* DDS_HAS_TYPELIB */

void dds_builtintopic_free_endpoint (dds_builtintopic_endpoint_t * builtintopic_endpoint)
{
Expand Down
6 changes: 3 additions & 3 deletions src/core/ddsc/src/dds_sertype_default.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ static bool sertype_default_equal (const struct ddsi_sertype *acmn, const struct
return true;
}

#ifdef DDS_HAS_TYPE_DISCOVERY
#ifdef DDS_HAS_TYPELIB

static ddsi_typeid_t * sertype_default_typeid (const struct ddsi_sertype *tpcmn, ddsi_typeid_kind_t kind)
{
Expand Down Expand Up @@ -90,7 +90,7 @@ static ddsi_typeinfo_t *sertype_default_typeinfo (const struct ddsi_sertype *tpc
return ddsi_typeinfo_deser (tp->typeinfo_ser.data, tp->typeinfo_ser.sz);
}

#endif /* DDS_HAS_TYPE_DISCOVERY */
#endif /* DDS_HAS_TYPELIB */

static uint32_t sertype_default_hash (const struct ddsi_sertype *tpcmn)
{
Expand Down Expand Up @@ -258,7 +258,7 @@ const struct ddsi_sertype_ops dds_sertype_ops_default = {
.zero_samples = sertype_default_zero_samples,
.realloc_samples = sertype_default_realloc_samples,
.free_samples = sertype_default_free_samples,
#ifdef DDS_HAS_TYPE_DISCOVERY
#ifdef DDS_HAS_TYPELIB
.type_id = sertype_default_typeid,
.type_map = sertype_default_typemap,
.type_info = sertype_default_typeinfo,
Expand Down
19 changes: 12 additions & 7 deletions src/core/ddsc/src/dds_topic.c
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ static void dds_topic_close (dds_entity *e)
struct dds_ktopic * const ktp = tp->m_ktopic;
assert (dds_entity_kind (e->m_parent) == DDS_KIND_PARTICIPANT);
dds_participant * const pp = (dds_participant *) e->m_parent;
#ifdef DDS_HAS_TYPE_DISCOVERY
#ifdef DDS_HAS_TYPELIB
ddsi_type_unref_sertype (&e->m_domain->gv, tp->m_stype);
#endif
dds_free (tp->m_name);
Expand Down Expand Up @@ -454,7 +454,7 @@ dds_entity_t dds_create_topic_impl (
pp = (struct dds_participant *) par_ent;
}

#ifdef DDS_HAS_TYPE_DISCOVERY
#ifdef DDS_HAS_TYPELIB
/* ensure that in case type information is present, both minimal and complete
type identifiers are present for the top-level type */
ddsi_typeinfo_t *type_info = ddsi_sertype_typeinfo (*sertype);
Expand Down Expand Up @@ -553,7 +553,7 @@ dds_entity_t dds_create_topic_impl (
ddsrt_mutex_unlock (&gv->sertypes_lock);
}

#ifdef DDS_HAS_TYPE_DISCOVERY
#ifdef DDS_HAS_TYPELIB
struct ddsi_type *type;
if ((rc = ddsi_type_ref_local (gv, &type, sertype_registered, DDSI_TYPEID_KIND_MINIMAL)) != DDS_RETCODE_OK
|| ddsi_type_ref_local (gv, NULL, sertype_registered, DDSI_TYPEID_KIND_COMPLETE) != DDS_RETCODE_OK)
Expand Down Expand Up @@ -591,7 +591,7 @@ dds_entity_t dds_create_topic_impl (

error:
dds_delete_qos (new_qos);
#ifdef DDS_HAS_TYPE_DISCOVERY
#ifdef DDS_HAS_TYPELIB
error_typeref:
#endif
dds_entity_unpin (&pp->m_entity);
Expand Down Expand Up @@ -1048,14 +1048,19 @@ dds_return_t dds_get_type_name (dds_entity_t topic, char *name, size_t size)

DDS_GET_STATUS(topic, inconsistent_topic, INCONSISTENT_TOPIC, total_count_change)

#ifdef DDS_HAS_TYPE_DISCOVERY
#ifdef DDS_HAS_TYPELIB

dds_return_t dds_create_topic_descriptor (dds_find_scope_t scope, dds_entity_t participant, const dds_typeinfo_t *type_info, dds_duration_t timeout, dds_topic_descriptor_t **descriptor)
{
dds_return_t ret;

#ifdef DDS_HAS_TYPE_DISCOVERY
if (scope != DDS_FIND_SCOPE_GLOBAL && scope != DDS_FIND_SCOPE_LOCAL_DOMAIN)
return DDS_RETCODE_BAD_PARAMETER;
#else
if (scope != DDS_FIND_SCOPE_LOCAL_DOMAIN)
return DDS_RETCODE_BAD_PARAMETER;
#endif
if (type_info == NULL || descriptor == NULL)
return DDS_RETCODE_BAD_PARAMETER;

Expand Down Expand Up @@ -1097,7 +1102,7 @@ dds_return_t dds_delete_topic_descriptor (dds_topic_descriptor_t *descriptor)
return DDS_RETCODE_OK;
}

#else /* DDS_HAS_TYPE_DISCOVERY */
#else /* DDS_HAS_TYPELIB */

dds_return_t dds_create_topic_descriptor (dds_find_scope_t scope, dds_entity_t participant, const dds_typeinfo_t *type_info, dds_duration_t timeout, dds_topic_descriptor_t **descriptor)
{
Expand All @@ -1111,7 +1116,7 @@ dds_return_t dds_delete_topic_descriptor (dds_topic_descriptor_t *descriptor)
return DDS_RETCODE_UNSUPPORTED;
}

#endif /* DDS_HAS_TYPE_DISCOVERY */
#endif /* DDS_HAS_TYPELIB */

void dds_cdrstream_desc_from_topic_desc (struct dds_cdrstream_desc *desc, const dds_topic_descriptor_t *topic_desc)
{
Expand Down
5 changes: 3 additions & 2 deletions src/core/ddsc/src/dds_writer.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
#include "dds/ddsi/ddsi_xmsg.h"
#include "dds/ddsi/ddsi_entity_index.h"
#include "dds/ddsi/ddsi_security_omg.h"
#include "dds/ddsi/ddsi_tkmap.h"
#include "dds/ddsi/ddsi_statistics.h"
#include "dds/ddsi/ddsi_sertype.h"
#include "dds/cdr/dds_cdrstream.h"
#include "dds__writer.h"
#include "dds__listener.h"
Expand All @@ -31,11 +34,9 @@
#include "dds__topic.h"
#include "dds__get_status.h"
#include "dds__qos.h"
#include "dds/ddsi/ddsi_tkmap.h"
#include "dds__whc.h"
#include "dds__statistics.h"
#include "dds__data_allocator.h"
#include "dds/ddsi/ddsi_statistics.h"

#ifdef DDS_HAS_SHM
#include "dds__shm_qos.h"
Expand Down
Loading

0 comments on commit c1c07c7

Please sign in to comment.