DDS Programming using Modern C++
Written by Sumant Tambe
March 3, 2013
Resurgence of C++ is spreading in many industries. International computer system standards that target C++ for application portability, are quickly adopting modern C++. At the Object Management Group (OMG)—an international standards consortium—the DDS-PSM-Cxx and the IDL2C++11 standards have been ahead of the curve. The DDS-PSM-Cxx is among the family of standards around the core Data Distribution Service (DDS) standard for developing high-performance distributed real-time systems. The DDS-PSM-Cxx standard, officially known as the "ISO/IEC C++ 2003 Language Platform Specific Mapping (PSM) for DDS", was finalized in December 2012. DDS-PSM-Cxx provides a portable C++ API for DDS programming, which is modern, idiomatic, STL-friendly, expressive, safe, and efficient. DDS-PSM-Cxx targets C++03 and makes special provisions for ensuring portability in C++11 environment.
Eager to learn more on how this shiny new way of programming DDS looks like and so cool about it? Read on...
There are two opportunities coming up for you. I'm privileged to talk about the DDS-PSM-Cxx standard in a local event organized by the San Francisco Bay Area Association of C/C++ Users (ACCU). This is a great after-hours free-of-cost get-together for anyone who wants to know more about C++. The event will take place on March 13th in Mountain View not far from the RTI HQ. If you plan to join us please RSVP! The second opportunity is in beautiful Aspen, Colorado. I will present DDS-PSM-Cxx in the C++ Now'13 conference, which will be held from May 12-17 in Aspen.
ABSTRACT: The presentation will begin by laying out the foundations of DDS—the data-centric publish-subscribe architecture for real-time distributed systems. You will learn the motivations, the objectives, and the high-level structure of the DDS-PSM-Cxx standard along with a “Hello, World!” application written using this modern C++ binding for DDS. The talk will further describe interesting aspects of the standard, such as the support for drop-in replacement of conforming vendor implementations, syntactic cues for vendor-specific extensions, and API extensibility using templates. This standard borrowed ideas from select Boost libraries without explicit dependencies on Boost. The presentation will dive deeper and describe the uses of various C++03 idioms (e.g., RAII, Type Erasure, Type-safe Enumerations, Method-chaining) to provide a clean, safe, and efficient API for DDS applications. The discussion will get most interesting with the exception-safety considerations that shaped the API in important ways. In particular, you will see how move-semantics can help design an exception-safe API. We will discuss the special rules adopted by the standard to allow conforming C++03 applications be forward compatible in C++11 environment. Finally, we will discuss some strategies for highly efficient and concurrency-friendly implementation.
So, see you in Mountain View or in Aspen or both!