The goal of this guide is to walk through downloading and running the DDS Interoperability Shapes demo program. The demo is a graphical application that will help you visualize some of the DDS concepts that OpenDDS supports without needing to read or write source code. The application allows you to create publishers and subscribers on topics represented by data payloads shown as simple shapes and see the results of the different quality of service, data partitioning, and filtering options provided. The Shapes demo makes use of the Real-Time Publish-Subscribe Wire Protocol Specification (DDSI-RTPS) that provides interoperable communications between various DDS implementations.
Environment Prerequisites
  1. Ensure that your environment has:

    • Qt 4
      • Windows: Download and install qt-opensource-windows-x86-vs2010-4.8.6.exe from the archived Qt downloads site. Make sure that the directory containing QtCore4.dll and QtGui4.dll (by default, C:\Qt\4.8.6\bin) is included in the PATH environment variable. Alternatively, those libraries may be copied into the directory where ishapes.exe is downloaded.
      • Ubunutu 16.04 LTS 64bit: Install by running sudo apt install libqtgui4
  2. Download or compile the latest Shapes demo for your operating system:
    • Alternatively, the Shapes demo can be run from a build from source of OpenDDS with Qt and Boost enabled. Boost is not required if building with a compiler that supports C++11. The demo resides in the examples/DCPS/ishapes directory. See Building for a complete list of dependencies and supported platforms.
Running the Shapes Demo
  1. Locate and run the Shapes demo and you should see a window that looks like this:

  2. The most basic example is to simply click the Publish button to begin publishing a circle and then click Subscribe to begin subscribing to the same circle topic you are publishing. As soon as you begin publishing, you should see a green circle bouncing around the display area with a white center. This indicates that this is a published object, originating at this application.

  3. After clicking Subscribe, as soon as the subscriber goes live and finds a match in the published circle topic, the center of the circle will go dark to indicate it is an instance of subscribed data, which in this case is being rendered over top the initial published instance.

  4. Now that we have confirmed the ability to run an instance of the Shapes demo, let's understand some of the DDS concepts seen at work even in this simple example.

    • Each of the available shapes in the drop-down menu are DDS Topics that can be published on or subscribed to.
    • Each instance on the topic has an instance key represented by the shape's color and the shape itself is a DDS Data type comprised of x and y coordinates as well as a size.

    What may not be apparent in this simple example is that the center of the circle going from white to dark is actually demonstrating the process of discovery, entity matching, publication, and subscription between two DDS entities. The additional example scenarios below make use of multiple shapes demo instances running concurrently to help demonstrate the capabilities better.

Example Scenarios

The pages linked below contain example scenarios that demonstrate different features of OpenDDS:


The examples worked through above have demonstrated some of the many Data Distribution Service features provided by OpenDDS. OpenDDS provides a portable and interoperable publish/subscribe infrastructure. You have learned a little about many DDS concepts including:

  • Discovery
  • Topics and Data Types
  • Publish/Subscribe semantics
  • One to Many and Many to One communications
  • Different Quality of Service (QoS)
    • Reliability
    • Durability
    • Ownership
    • Data Partitioning
    • Time Based Filter
  • Content Filtered Topics

Hopefully this has helped provide an understanding of what using OpenDDS to provide a publish/subscribe infrastructure can look like and the different features that can be included in a product using OpenDDS as its communications infrastructure.

Next Steps

Now that you've acquired a conceptual baseline, here are some recommended next steps to continue learning about OpenDDS:

  • Work through downloading and building OpenDDS and running a simple example through the Quick Start Guides
  • Find more support information about dependencies and detailed build instructions here.
  • Learn more about OpenDDS features and how to set up your own DDS infrastructure through the Developer's Guide.
  • Need help? Curious about training? See Support.
  • Visit the OpenDDS project on GitHub