.. _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 `