.. _architecture_dds: DDS module ========== .. raw:: html .. raw:: html :file: ../figures/svg_href_loader.html .. raw:: html :file: ../figures/stack_diagram.svg Safe DDS implements the `DDS (Data Distribution Service) Specification `__ specification defined by the `Object Management Group (OMG) `__. In order to provide flexibility and portability, two different DDS APIs are provided: * A classic, factory-based API for DDS that employs controlled memory allocations. * A modern C++, object-oriented API for DDS that ensures zero memory allocations. These Safe DDS APIs are documented in the :ref:`DDS Layer ` section. The :ref:`DDS Layer ` section also provides a detailed description of the DDS concepts and the DDS API. Both APIs uses the same underlying DDS implementation, which is based in the concepts defined by the OMG's DDS Specification: * :ref:`dds_layers_infrastructure_policies` * :ref:`dds_layers_infrastructure_status` * :ref:`dds_layers_domain` * :ref:`dds_layers_infrastructure_entities` * :ref:`dds_layers_topic` * :ref:`dds_layers_publication_publisher` * :ref:`dds_layers_subscription_subscriber` * :ref:`dds_layers_publication_datawriter` * :ref:`dds_layers_subscription_datareader` * :ref:`typesupport` .. note:: For reference, the current implementation is compliant with OMG DDS specification v1.4 and OMG DDSI-RTPS specification v2.5. .. _architecture_dds_classic: Classic DDS API --------------- .. include:: ../safety_manual/rules/RULE_CLASSIC_API.inc The classic DDS API is a factory-based API that provides a controlled memory allocation via :ref:`dds_layers_infrastructure_safedds_preallocmemoryconfig` and related QoS policies, as explained in :ref:`architecture_platform_memory_management` section (see :ref:`DDS Layer `). A example of use of this API can be seen in the :ref:`getting_started` section as well as in: * :ref:`DomainParticipant creation reference ` * :ref:`Topic creation reference ` * :ref:`Publisher creation reference ` * :ref:`Subscriber creation reference ` * :ref:`DataWriter creation reference ` * :ref:`DataReader creation reference ` .. _architecture_dds_static: Static DDS API -------------- .. include:: ../safety_manual/rules/RULE_CLASSIC_API.inc The static DDS API is a modern C++, object-oriented API that ensures zero memory allocation by providing a sightly different API from that of the :ref:`architecture_dds_classic` (see :ref:`DDS Layer ` for more information). The usage of this API is documented in: * :ref:`StaticDomainParticipant creation reference ` * :ref:`StaticTopic creation reference ` * :ref:`StaticPublisher creation reference ` * :ref:`StaticSubscriber creation reference ` * :ref:`StaticDataWriter creation reference ` * :ref:`StaticDataReader creation reference `