OpenDDS is an open source C++ implementation of the Object Management Group (OMG) Data Distribution Service (DDS). OpenDDS also supports Java bindings through JNI.
C++ HTML Java Perl XSLT Shell Other
Switch branches/tags
Clone or download
mitza-oci Merge pull request #885 from iguessthislldo/wireshark_improvements
Fix ws_common.h for Wireshark 1.2 and 1.3
Latest commit 12477ad Jul 16, 2018
Permalink
Failed to load latest commit information.
DevGuideExamples Updated to refer to new docker image Aug 29, 2017
FACE Update gen_skip_over to also return a bool Apr 12, 2017
MPC gnuace build with java: added a generic rule to generate all *.java b… Oct 18, 2017
bin Add single process Messenger to the test manifest Mar 16, 2018
contrib Removed obsolete exception specifications, see issue #361 Dec 19, 2016
dds Detect when we are using the new std atomic usage introduced with TAO… Jun 27, 2018
docs Use link to xsc repo for reporting issues Mar 18, 2018
etc Doxygen: main page and ACE/TAO links index Feb 2, 2018
examples/DCPS Partially revert "Make TransportRegistry the owner of TransportInst O… Apr 4, 2018
java Partially revert "Make TransportRegistry the owner of TransportInst O… Apr 4, 2018
lib Support for Java compact1 profile (use MPC feature full_jre=0) Aug 25, 2016
performance-tests Fix incorrect debug text for performance tests Jun 7, 2018
tests fixed error when built-in topics are disabled Jun 19, 2018
tools Merge pull request #885 from iguessthislldo/wireshark_improvements Jul 16, 2018
.dockerignore Add OpenDDS Docker image Aug 28, 2017
.gitignore Missing entries in .gitignore files Oct 4, 2017
.gitmodules Import the Intermediate Type Language (itl) library which was previou… Jan 15, 2016
.travis.yml Add NO_INLINE=1 May 18, 2018
AUTHORS Thu Jan 22 20:06:59 UTC 2015 Paul Calabrese <calabrese_p@ociweb.com> Jan 22, 2015
DDS.mwc Add ACE_TAO as include, is the default directory name for the ACE_TAO… Nov 18, 2016
DDS_TAOv2.mwc Valuetype is needed for messaging, so removed the comment about dds4ccm Jun 6, 2017
DDS_TAOv2_all.mwc Removed $Id$ and $Revision$ svn keywords Jul 2, 2015
DDS_no_tests.mwc ChangeLogTag: Fri Jan 21 19:28:58 UTC 2011 Adam Mitz <mitza@ociweb.com> Jan 21, 2011
Dockerfile Tidy up Dockerfile and simplify entry command Aug 31, 2017
INSTALL INSTALL: corrections for Pi section Feb 19, 2018
LICENSE Wed Sep 23 21:36:29 UTC 2009 Steven Stallion <stallions@ociweb.com> Sep 23, 2009
NEWS.md NEWS.md set up for future release Sep 1, 2017
PROBLEM-REPORT-FORM Version 3.12 Sep 1, 2017
README.md Readme: Codacy badge Jan 29, 2018
VERSION Version 3.12 Sep 1, 2017
appveyor.yml Appveyor use ACE master for now Jan 16, 2018
configure configure: updated macOS version detection to always use new scheme Jun 20, 2018
configure.cmd ChangeLogTag: Fri Feb 4 22:44:29 UTC 2011 Adam Mitz <mitza@ociweb.com> Feb 4, 2011
rules.dds.GNU Use idl2jni from a host build to allow cross-compilation with java=1. Aug 24, 2016

README.md

Build Status Build status Coverity Scan Build Status Codacy Badge

OpenDDS is an open-source C++ implementation of the Object Management Group's specification "Data Distribution Service for Real-time Systems". Although OpenDDS is itself developed in C++, Java and JMS bindings are provided so that Java applications can use OpenDDS.

OpenDDS is built on the ACE abstraction layer to provide platform portability. OpenDDS also leverages capabilities of TAO, such as its IDL compiler and as the basis of the OpenDDS DCPS Information Repository (DCPSInfoRepo).

The primary development of OpenDDS was done by Object Computing, Incorporated in St. Louis and Phoenix. It is released under the same generous license terms as ACE, TAO and MPC. See the LICENSE file for details.

Documentation

The OpenDDS Developer's Guide is freely downloadable at: http://download.objectcomputing.com/OpenDDS/

The TAO Developer's Guide book set may also be purchased from: http://www.theaceorb.com/purchase/index.html

Support

If you encounter any problems with this release please fill out the PROBLEM-REPORT-FORM file found in this directory and use it when posting to the mailing list or creating a GitHub Issue.

For commercial support please see http://opendds.org/support.html.

Features

This release of OpenDDS is based on the DDS Specification formal/2015-04-10 (version 1.4). It features the following transport protocols:

  • TCP/IP
  • UDP/IP
  • IP multicast
  • RTPS over UDP/IP (unicast and multicast)

RTPS (Interoperability) features are based on the DDS-RTPS Specification formal/2014-09-01 (version 2.2). See the OpenDDS Developer's Guide and the file docs/design/RTPS for more details on RTPS.

See the Developer's Guide for information on OpenDDS compliance with the DDS specification. If you would like to contribute a feature or sponsor the developers to add a feature please see the Support section above for contact information.

Dependencies

TAO

OpenDDS requires TAO for both IDL compilation as well as interaction with the DCPSInfoRepo. If you will be using the "configure" script for OpenDDS (see the INSTALL file for details), you do not need to download TAO first -- the "configure" script will download it for you.

Use one of the following versions when building OpenDDS:

  • TAO 2.2a patch 12
  • TAO 2.4.4 (DOC Group)

Note that the 2.2a release is from OCI and can be obtained from http://www.theaceorb.com/. The DOC Group releases can be obtained from http://download.dre.vanderbilt.edu/.

GNU Make

GNU Make 3.80+ was used for automating the compiling and linking of OpenDDS on Unix and Linux systems.

Perl

Perl is used for running the automated tests and examples included in this source tree and generating Makefiles or Visual Studio project files. On Windows we recommend the use of ActiveState Perl. The configure script also uses Perl.

Operating Systems

This release of OpenDDS has been tested under the following platforms:

Linux family:

  • Red Hat EL 5 and 5.3, x86_64
  • Red Hat EL and CentOS 6.6 and 6.8, x86_64
  • Red Hat EL and CentOS 7.2 and 7.3, x86_64
  • Fedora Core 6, x86
  • Fedora 24 and 26, x86_64
  • Ubuntu 16.04 LTS, x86_64
  • openSUSE 42.1, and 42.2, x86_64

Windows family:

  • Windows 7 (32-bit, 64-bit)
  • Windows Server 2012 R2 (64-bit)
  • Windows 10 (64-bit)

Others:

  • SunOS 5.10 (Solaris 10) (SPARC)
  • Mac OSX 10.11 (El Capitan)

Embedded/Mobile/IoT:

  • LynxOS-178 (OpenDDS Safety Profile)
  • VxWorks 6.9 and 7 (see below)
  • Linux on Raspberry Pi and Intel Edison
  • Android NDK r12b (ARM)

We have built OpenDDS for VxWorks 6.9 and 7 and have run basic system and performance tests (but not the entire regression test suite). Please contact sales@objectcomputing.com or opendds-main@lists.sourceforge.net for more information on support for ACE, TAO, and OpenDDS on VxWorks. OCI's packages for ACE, TAO, and OpenDDS can be obtained on the Wind River Marketplace at: https://marketplace.windriver.com/index.php?partners&on=details&id=33

Compilers

This release of OpenDDS has been tested using the following compilers:

  • Microsoft Visual C++ 9 with SP1 (Visual Studio 2008)
  • Microsoft Visual C++ 10 with SP1 (Visual Studio 2010)
  • Microsoft Visual C++ 11 (Visual Studio 2012) - Update 4
  • Microsoft Visual C++ 12 (Visual Studio 2013) - Update 5
  • Microsoft Visual C++ 14 (Visual Studio 2015) - Update 3
  • Microsoft Visual C++ 14.1 (Visual Studio 2017) - Update 3
  • gcc 4.1.x
  • gcc 4.4.x
  • gcc 4.8.x
  • gcc 4.9.x
  • gcc 5.4
  • gcc 6.2
  • gcc 7.2
  • Clang 4.0 (llvm.org) and 7.3 (Apple)
  • Sun C++ 5.9 SunOS_sparc Patch 124863-01 2007/07/25

Building and Installing

For building and installation instructions see the INSTALL file in this directory.

Quick Start with Docker

Docker images containing a pre-built OpenDDS are available on DockerHub. An image corresponding to a particular release has a tag of the form release-DDS-X.xx, e.g., release-DDS-3.12.

  1. Check for prerequisites

     docker --version
     docker-compose --version
    
  2. Enter a container

     docker run --rm -ti -v "$PWD:/opt/workspace" objectcomputing/opendds
    
  3. Copy the Messenger directory which contains an example from the Developer's Guide

     cp -R /opt/OpenDDS/DevGuideExamples/DCPS/Messenger Messenger
     cd Messenger
    
  4. Configure and build the Messenger example

     mwc.pl -type gnuace
     make
    
  5. Exit the container

     exit
    
  6. Enter the Messenger directory

     cd Messenger
    
  7. Create an rtps.ini file to control discovery with the following content

     [common]
     DCPSGlobalTransportConfig=$file
     DCPSDefaultDiscovery=DEFAULT_RTPS
    
     [transport/the_rtps_transport]
     transport_type=rtps_udp
    
  8. Run the Messenger example with RTPS

     docker-compose up
    
  9. Run the Messenger example with InfoRepo

     docker-compose -f docker-compose-inforepo.yml up
     # Use Control-C to kill the InfoRepo process
    

OpenDDS Compliance with the DDS Specification

See http://www.opendds.org and the OpenDDS Developer's Guide at: http://download.objectcomputing.com/OpenDDS/OpenDDS-latest.pdf