Skip to content

Commit

Permalink
qos_provider support (#1955)
Browse files Browse the repository at this point in the history
* qos_provider support added
* qos_provider tests
* qos_provider documentation
* qos_provider build flag
* system definition parsing support

Signed-off-by: Splinter1984 <[email protected]>

* fix #1955 remarks
* CI analyzer comliant fixes

Signed-off-by: Splinter1984 <[email protected]>

---------

Signed-off-by: Splinter1984 <[email protected]>
  • Loading branch information
Splinter1984 authored Apr 3, 2024
1 parent 0bf9627 commit 4765392
Show file tree
Hide file tree
Showing 24 changed files with 6,278 additions and 63 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ There are some configuration options specified using CMake defines in addition t
* `-DENABLE_SOURCE_SPECIFIC_MULTICAST=NO`: to disable support for source-specific multicast (disabling this and `-DENABLE_IPV6=NO` may be needed for QNX builds)
* `-DENABLE_IPV6=NO`: to 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)
* `-DENABLE_QOS_PROVIDER=NO`: to disable support for qos provider

### For application developers

Expand Down
65 changes: 33 additions & 32 deletions docs/manual/about_dds/eclipse_cyclone_dds.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
datareaders
datawriters
qos
qos_provider
listener
waitset
status
Expand All @@ -30,28 +31,28 @@
ddsi_concepts
contributing

|var-project| is a performant and robust OMG-compliant **Data Distribution Service**
(DDS) implementation (see |url::dds_spec|). |var-project-short| is developed
completely in the open as an Eclipse IoT project (see |url::cyclone_dds-link|) with a
growing list of |url::cyclone_adopters|. It is a tier-1 middleware for the Robot
|var-project| is a performant and robust OMG-compliant **Data Distribution Service**
(DDS) implementation (see |url::dds_spec|). |var-project-short| is developed
completely in the open as an Eclipse IoT project (see |url::cyclone_dds-link|) with a
growing list of |url::cyclone_adopters|. It is a tier-1 middleware for the Robot
Operating System |url::ros2|.

The core of |var-project-short| is implemented in C and provides C-APIs to applications.
The core of |var-project-short| is implemented in C and provides C-APIs to applications.
Through its C++ package, the |url::omg.org| 2003 language binding is also supported.

.. index:: About DDS

About DDS
=========

DDS is the best-kept secret in distributed systems, one that has been around for much
DDS is the best-kept secret in distributed systems, one that has been around for much
longer than most publish-subscribe messaging systems and still outclasses so many of them.
DDS is used in a wide variety of systems, including air-traffic control, jet engine
testing, railway control, medical systems, naval command-and-control, smart greenhouses
and much more. In short, it is well-established in aerospace and defense but no longer
DDS is used in a wide variety of systems, including air-traffic control, jet engine
testing, railway control, medical systems, naval command-and-control, smart greenhouses
and much more. In short, it is well-established in aerospace and defense but no longer
limited to that. And yet it is easy to use!

Types are usually defined in IDL and preprocessed with the IDL compiler included in Cyclone,
Types are usually defined in IDL and preprocessed with the IDL compiler included in Cyclone,
but our |url::python-link2| allows you to define data types on the fly:

.. code-block:: python
Expand Down Expand Up @@ -96,30 +97,30 @@ but our |url::python-link2| allows you to define data types on the fly:
print("Read ", sample)
sleep(rng.exponential())
Today DDS is also popular in robotics and autonomous vehicles because those really
depend on high-throughput, low-latency control systems without introducing a single
point of failure by having a message broker in the middle. Indeed, it is by far the
most used and the default middleware choice in ROS 2. It is used to transfer commands,
Today DDS is also popular in robotics and autonomous vehicles because those really
depend on high-throughput, low-latency control systems without introducing a single
point of failure by having a message broker in the middle. Indeed, it is by far the
most used and the default middleware choice in ROS 2. It is used to transfer commands,
sensor data and even video and point clouds between components.

The OMG DDS specifications cover everything one needs to build systems using
publish-subscribe messaging. They define a structural type system that allows
automatic endianness conversion and type checking between readers and writers. This
type system also supports type evolution. The interoperable networking protocol and
standard C++ API make it easy to build systems that integrate multiple DDS
implementations. Zero-configuration discovery is also included in the standard and
The OMG DDS specifications cover everything one needs to build systems using
publish-subscribe messaging. They define a structural type system that allows
automatic endianness conversion and type checking between readers and writers. This
type system also supports type evolution. The interoperable networking protocol and
standard C++ API make it easy to build systems that integrate multiple DDS
implementations. Zero-configuration discovery is also included in the standard and
supported by all implementations.

DDS actually brings more: publish-subscribe messaging is a nice abstraction over
"ordinary" networking, but plain publish-subscribe doesn't affect how one *thinks*
about systems. A very powerful architecture that truly changes the perspective on
distributed systems is that of the "shared data space", in itself an old idea, and
really just a distributed database. Most shared data space designs have failed
miserably in real-time control systems because they provided strong consistency
guarantees and sacrificed too much performance and flexibility. The *eventually
consistent* shared data space of DDS has been very successful in helping with building
systems that need to satisfy many "ilities": dependability, maintainability,
extensibility, upgradeability, ... Truth be told, that's why it was invented, and
DDS actually brings more: publish-subscribe messaging is a nice abstraction over
"ordinary" networking, but plain publish-subscribe doesn't affect how one *thinks*
about systems. A very powerful architecture that truly changes the perspective on
distributed systems is that of the "shared data space", in itself an old idea, and
really just a distributed database. Most shared data space designs have failed
miserably in real-time control systems because they provided strong consistency
guarantees and sacrificed too much performance and flexibility. The *eventually
consistent* shared data space of DDS has been very successful in helping with building
systems that need to satisfy many "ilities": dependability, maintainability,
extensibility, upgradeability, ... Truth be told, that's why it was invented, and
publish-subscribe messaging was simply an implementation technique.

|var-project| aims at full coverage of the specs and today already covers most of this.
Expand All @@ -136,8 +137,8 @@ With references to the individual OMG specifications, the following is available
- |url::dds_xtypes| - the structural type system (some [caveats](docs/dev/xtypes_relnotes.md) here)
- |url::dds2.5| - the interoperable network protocol

The network stack in |var-project| has been around for over a decade in one form or
another and has proven itself in many systems, including large, high-availability
The network stack in |var-project| has been around for over a decade in one form or
another and has proven itself in many systems, including large, high-availability
ones and systems where inter-operation with other implementations was needed.

.. include:: disclaimer.part.rst
Loading

0 comments on commit 4765392

Please sign in to comment.