SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
Splice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS




                               SimD
                                  The Simple DDS API
       :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::



                                                    Angelo Corsaro, Ph.D.
                                                      Chief Technology Officer
                                                               PrismTech
                                                       OMG DDS SIG Co-Chair
                                                    angelo.corsaro@prismtech.com


Splice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS
SimD
                              The Simple DDS API
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




                                                                        Background
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                  DDS PIM/PSM Approach
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




‣ The DDS standard is composed                                                             PIM (UML)
    by a PIM specified in UML and
    A PSM specified in IDL
                                                                                           PSM (IDL)
‣ Language specific APIs are                                           IDL2C
    derived via IDL-based mappings                                                               IDL2C++
                                                                                                           IDL2Java

    (e.g. IDL2C++, etc.)
                                                                          C                  C++           Java
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                        What is the problem?
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   ‣ IDL is very good for describing DDS Topic Types, yet...
   ‣ IDL’s biggest strength, namely (programming) language
       independence, becomes its biggest weakness when trying to
       define APIs that are well integrated with a programming
       language

   ‣ For some programming languages (e.g. C++) the IDL2C++
       mapping is “seasoned”
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                      Why is this a problem?
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   ‣ Resulting DDS APIs are more complicated than they should
   ‣ API don’t feel natural to programmers
   ‣ API (esp. for C++) don’t integrate well with standard libraries
       nor implements common idioms/patterns.
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                SimD: a Native C++ PSMs
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::



   ‣ SimD addresses the problem by
       deriving a new C++ PSM from DDS
                                                                                           PIM (UML)
       starting directly from the PIM

   ‣ SimD takes advantage of all the                                                       PSM (C++)
       features available in C++ in order to
       provide a natural, productive and
       safe API

               SimD simplifies DDS Programming w/o limiting the
            expensiveness or introducing limitations in what possible
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                             SimD in a Nutshell
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::



   ‣ Provides transparent, safe, precise and real-time automatic
       memory management

   ‣ Takes advantage of C++ Template Meta-programming to
       automate tasks such as type registration and provide a
       strongly typed API (no downcast ever!)

   ‣ Provides a DDS API that exploits Iterators and containers as
       well as other C++ Standard Types

   ‣ DDS Events are types and are using Signal/Slots
SimD
                              The Simple DDS API
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




                                                                            Looking at
                                                                            a DDS App...
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
       Anatomy of a DDS Application
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::

                                                                             DP: DomainParticipant   DR: DataReader
                                                                             P: Publisher            DW: DataWriter
                                                                             S: Subscribe
  ‣ Tree-like dependency between
      DP->(P,S)->(DR, DW) in creation                                 DataWriter                                   DataReader

      and life-cycle management                                                 Publisher                 Subscriber


  ‣ Example: DW alive requires                                                         DomainParticipant

      the parent P to be alive

  ‣ This tree-like dependency
      allows precise GC of DDS                                                                 Topic
      Entities via reference counting                                                         Partition

                                                                                                          Domain
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
            SimD Memory Management
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   ‣ SimD distinguishes between                                           DataWriter                           DataReader
       “Values” and “Reference” types                                                            Topic


   ‣ Reference types are subject to                                               Publisher              Subscriber

       automatic memory management

   ‣ DDS Entities (DP, P, S, DR, DW)                                                       DomainParticipant
       and Conditions are references

   ‣ Policies and Samples are
       values
SimD
                              The Simple DDS API
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




                                             SimD: Step By Step
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                   DDS App Steps
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   1. Define the Information Model
   1
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                   DDS App Steps
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   1. Define the Information Model
   1

   2. Connect to proper Domain/Partition
   2
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                   DDS App Steps
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   1. Define the Information Model
   1

   2. Connect to proper Domain/Partition
   2

   3. Create Topic
   3
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                   DDS App Steps
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   1. Define the Information Model
   1

   2. Connect to proper Domain/Partition
   2

   3. Create Topic
   3

   4. Create DataWriter
   4
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                   DDS App Steps
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   1. Define the Information Model
   1

   2. Connect to proper Domain/Partition
   2

   3. Create Topic
   3

   4. Create DataWriter
   4

   5. Create DataReader
   4
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
               Temperature Control App.
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::



                                                                  enum TemperatureScale {
                                                                  ! CELSIUS,
 ‣ Let’s assume that we need                                      ! KELVIN,
     to write an application for                                  ! FAHRENHEIT
                                                                  };
     controlling the temperature                                  !
     of a building                                                struct TempSensorType {
                                                                  ! short id;
                                                                  ! float temp;
 ‣ The first step is to be able                                   ! float hum;
     to read/write the                                               TemperatureScale scale;
     Temperature from sensors
                                                                  };
                                                                  #pragma keylist TempSensor id
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                     SimD Runtime
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::



   Exploiting the structure of DDS applications, SimD provides a
   Runtime class that automates some of the common boilerplate
   ‣ SimD Runtime joins the default-domain and creates a Pub/Sub
       couple connected to the default partition

   ‣ The default behaviour can be overridden by passing proper
       parameters when creating the Runtime object

               Runtime();
               Runtime(const std::string& partition);
               Runtime(const std::string& partition, const std::string& domain);
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                           SimD Topic
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::



   ‣ SimD Topics are template classes parametrized in the Topic-Type
   ‣ The Topic takes care of automatically registering the type
   ‣ If no TopicQoS is explicitly provided to the ctor, the topic is
       created with default Qos
        Topic(const std::string& name);

        Topic(const std::string& name, const TopicQos& qos);

        Topic(const std::string& name, const std::string& type_name);

        Topic(const std::string& name, const std::string& type_name, const TopicQos& qos);
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
  Registering the TempSensor Topic
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




                                                             TempSensor



       struct TempSensorType {
       ! short id;
       ! float temp;
       ! float hum;                                                                        Default
                                                                   Topic                    QoS
         TemperatureScale scale;

       };


                     dds::Topic<TempSensorType> topic("TempSensor");
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                              SimD DataWriter
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::



   ‣ SIMD provides different DataWriter constructors allowing to
       control the level of customization required for the specific writer

  template <typename T>
  class dds::DataWriter : public dds::Entity {
  public:
     DataWriter();

       DataWriter(Topic<T> topic)

       DataWriter(Topic<T> topic, const DataWriterQos& qos)

     DataWriter(Topic<T> topic, const DataWriterQos& qos, Publisher pub);
  // ...
  };
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                   Writing Data with SimD
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::



   ‣ SIMD provides two generic writes as well as a method for
       creating a writer dedicated to a specific instance

   ‣ The DataInstanceWriter provides constant time writes as it
       does not need to look-up the key-fields


        dds::ReturnCode_t write(const T& sample);

        dds::ReturnCode_t write(const T& sample, const dds::Time_t& timestamp);

        dds::DataInstanceWriter<T> register_instance(const T& key);
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
          Writing TempSensor Samples
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




      // Join the default-domain and the “SensorData” partition
      dds::Runtime runtime("SensorData");

      // Create the “TempSensor” Topic
      dds::Topic<TempSensorType> topic("TempSensor");

      // Create a DataWriter
      dds::DataWriter<TempSensorType> dw(Topic);

      TempSensorType ts = {1, 26.0F, 70.0F, CELSIUS};

      // Write Data
      dw.write(ts);
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                    Writing Data with QoS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::

      dds::Duration latency_budget = {2, 0};
      dds::Duration deadline = {4, 0};

      // Create the TopicQos
      dds::TopicQos tqos;

      // Set Latency Budget, Transport Priority & Deadline
      tqos.set_latency_budget(latency_budget);
      tqos.set_deadline(deadline);
      tqos.set_priority(tsPrio);

      // Create the “TempSensor” Topic
      dds::Topic<TempSensorType> topic("TempSensor", tqos);
      dds::DataWriterQos dwqos(tqos);
      // Create a DataWriter
      dds::DataWriter<TempSensorType> dw(topic, dwqos);
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                              SimD DataReader
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::



   ‣ SIMD provides different DataReader constructors allowing to
       control the level of customization required for the specific reader

  template <typename T>
  class dds::DataReader : public dds::Entity {
  public:
     DataReader();

       DataReader(Topic<T> topic)

       DataReader(Topic<T> topic, const DataReader Qos& qos)

     DataReader(Topic<T> topic, const DataReader Qos& qos, Subscriber pub);
  // ...
  };
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                             Reading with SimD
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   ‣ SimD supports legacy reads using Sequences along with
       std::vector and iterator-based(Forward + Output) read/take API

void read(TSeq& samples, dds::SampleInfoSeq& infos);

void read(std::vector<T>& data,             std::vector<dds::SampleInfo> info);
template <typename DataForwardIterator, typename InfoForwardIterator>
uint32_t
read(DataForwardIterator data_begin, InfoForwardIterator info_begin, uint32_t max_samples);

template <typename DataOutputIterator, typename InfoOutputIterator>
uint32_t
read(DataOutputIterator data_begin, InfoOutputIterator info_begin);
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                      Swiss Army Knife Read
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::



   ‣ The most generic read supported by DDS is provided through
       the TSeq, std::vector and iterator variations



           void read(std::vector<T>& data,
                     std::vector<dds::SampleInfo> info,
                     dds::SampleStateMask samples_state,
                     dds::ViewStateMask views_state,
                     dds::InstanceStateMask instances_state)
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
          Reading TempSensor Samples
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::


             // Join the default-domain and the “SensorData” partition
             dds::Runtime runtime("SensorData");

             // Create the “TempSensor” Topic
             dds::Topic<TempSensorType> topic("TempSensor");

             // Create a DataReader
             dds::DataReader<TempSensorType> dr(topic);

             std::vector<TemSensorType> data;
             std::vector<SampleInfo> info;

             while (true) {
                dr.read(data, info);
                for (int i =0; i < data.length(); ++i)
                   std::cout << data[i] << std::endl;
                sleep(1);
             }
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                              Reading with QoS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::

      dds::Duration latency_budget = {2, 0};
      dds::Duration deadline = {4, 0};

      // Create the TopicQos
      dds::TopicQos tqos;

      // Set Latency Budget, Transport Priority & Deadline
      tqos.set_latency_budget(latency_budget);
      tqos.set_deadline(deadline);
      tqos.set_priority(tsPrio);

      // Create the Topic
      dds::Topic<TempSensorType> tsTopic("TempSensor", tqos);

      // Create the DataReaderQos from TopicQos
      dds::DataReaderQos drqos(tqos);

      // Create the DataReader
      dds::DataReader<TempSensorType> dr(tsTopic, drqos);
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                    SimD WaitSets
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   ‣ SimD WaitSets provides an improved usability along with
       new behaviour

   ‣ SimD WaitSets and Conditions are strongly typed
   ‣ SimD WaitSet rely on C++ functors to handle condition
       triggering (handling is done in the context of a user call)

   ‣ Let’s see them in action...
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                             Condition Handler
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




  class TempSensorDataHandler {
  public:
     void operator() (dds::DataReader<TempSensorType>& reader) {
        std::vector<TempSensorType> data;
        std::vector<dds::SampleInfo>      info;
        reader.read(data, info);
        //[NOTE #1] Do whatever is needed with the data
     }
  };
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                      SimD WaitSets
  :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::



dds::DataReader<TempSensorType> dr(topic);
                                                                   //[NOTE #4] Wait for some condition to
//[NOTE #1]: Create an instance of                                 // become active, and retrieve all active
//the handler                                                      // conditions
TempSensorDataHandler handler;                                     auto conds = ws.wait(timeout);

//[NOTE #2]: Create a read condition for                           //[NOTE #5] Execute the condition handlers
// the given reader                                                for (auto i = conds.begin();
auto rcond =                                                            i < conds.end(); ++i)
   dr.create_readcondition(handler);                                  i->execute();

//[NOTE #3]: Create a Waitset and attach
// the condition                                                   //[NOTE #5] Automatically dispatch the
dds::WaitSet ws;                                                   // condition handlers when conditions
ws.attach(rcond);                                                  //are notified
                                                                   ws.dispatch(timeout);
dds::Duration timeout = {1, 0};
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                SimD “Listeners”
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   ‣ SimD takes a different approach to DDS event notifications
   ‣ SimD associate a type to each event that DDS entities might
       ever raise

   ‣ Handlers can be connected only for supported events
   ‣ Handlers can be attached to individual events
   ‣ Handler can be any C++ callable entity that matches the
       expected signature, e.g., function, functor, methods
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                     Event Handler
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




         class TempSensorDataHandler {
         public:
            void handle_data(dds::DataReader<TempSensorType>& reader) {
               std::cout << "Reading..." << std::endl;
               std::vector<TempSensorType> data;
               std::vector<dds::SampleInfo>      info;
               reader.read(data, info);
               //[NOTE #1] Do whatever is needed with the data
            }
         };
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                           Registering Handler
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::



        dds::DataReader<TempSensorType> dr(topic);

        //[NOTE #1]: Create an instance of the handler
        TempSensorDataHandler handler;


        auto func =
           boost::bind(TempSensorDataHandler::handle_data,
                       &handler, _1);

        //[NOTE #2]: Register the handler for the relevant event
        auto connection =
           dr.connect<on_data_available>(func);
SimD
                              The Simple DDS API
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




                                                                                           Demo
SimD
                              The Simple DDS API
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




                                                                                           StatuS
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                         SimD Status
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   ‣ SimD has been an incubator for the new ISO C++ DDS PSM
   ‣ The code is already used by several OpenSplice DDS users in
       both R&D as well as commercial applications

   ‣ SimD API will transition to v1.x only after the adoption of the
       new C++ PSM so to ensure stable API with v1.x
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                 SimD Availability
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   ‣ SimD is an OpenSource
      project licensed under LGPL

   ‣ SimD is available for Linux/
      Unix/Windows at:

                   http://code.google.com/p/simd-cxx/
SimD
                              The Simple DDS API
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




                                                                           Summing Up
                                                                                   +/-
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
                                        Summing Up
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::




   ‣ SimD provides a safe, efficient and productive C++ API for
       DDS

   ‣ SimD has been instrumental in experimenting ideas for
       evolving the ISO C++ DDS PSM

   ‣ SimD code is already pretty robust and used by a large
       community

Contenu connexe

Tendances

The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part IIAngelo Corsaro
 
DDS in Action -- Part I
DDS in Action -- Part IDDS in Action -- Part I
DDS in Action -- Part IAngelo Corsaro
 
Introduction to DDS
Introduction to DDSIntroduction to DDS
Introduction to DDSRick Warren
 
Ceph Object Storage Reference Architecture Performance and Sizing Guide
Ceph Object Storage Reference Architecture Performance and Sizing GuideCeph Object Storage Reference Architecture Performance and Sizing Guide
Ceph Object Storage Reference Architecture Performance and Sizing GuideKaran Singh
 
20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies20 Tips for OpenSplice Newbies
20 Tips for OpenSplice NewbiesAngelo Corsaro
 
ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020
ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020
ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020Joe Speed
 
OMG Data-Distribution Service (DDS) Tutorial - 2009
OMG Data-Distribution Service (DDS) Tutorial - 2009OMG Data-Distribution Service (DDS) Tutorial - 2009
OMG Data-Distribution Service (DDS) Tutorial - 2009Gerardo Pardo-Castellote
 
Using Magnolia in a Microservices Architecture
Using Magnolia in a Microservices ArchitectureUsing Magnolia in a Microservices Architecture
Using Magnolia in a Microservices ArchitectureMagnolia
 
Introduction to Thrift
Introduction to ThriftIntroduction to Thrift
Introduction to ThriftDvir Volk
 
DDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardDDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardAngelo Corsaro
 
Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++Sumant Tambe
 
The Future of GlusterFS and Gluster.org
The Future of GlusterFS and Gluster.orgThe Future of GlusterFS and Gluster.org
The Future of GlusterFS and Gluster.orgJohn Mark Walker
 
Scaling WebRTC applications with Janus
Scaling WebRTC applications with JanusScaling WebRTC applications with Janus
Scaling WebRTC applications with JanusLorenzo Miniero
 
Apache Tez – Present and Future
Apache Tez – Present and FutureApache Tez – Present and Future
Apache Tez – Present and FutureDataWorks Summit
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution ServiceAngelo Corsaro
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisArnab Mitra
 

Tendances (20)

The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part II
 
DDS in Action -- Part I
DDS in Action -- Part IDDS in Action -- Part I
DDS in Action -- Part I
 
Introduction to DDS
Introduction to DDSIntroduction to DDS
Introduction to DDS
 
Ceph Object Storage Reference Architecture Performance and Sizing Guide
Ceph Object Storage Reference Architecture Performance and Sizing GuideCeph Object Storage Reference Architecture Performance and Sizing Guide
Ceph Object Storage Reference Architecture Performance and Sizing Guide
 
20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies
 
ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020
ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020
ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020
 
OMG Data-Distribution Service (DDS) Tutorial - 2009
OMG Data-Distribution Service (DDS) Tutorial - 2009OMG Data-Distribution Service (DDS) Tutorial - 2009
OMG Data-Distribution Service (DDS) Tutorial - 2009
 
Using Magnolia in a Microservices Architecture
Using Magnolia in a Microservices ArchitectureUsing Magnolia in a Microservices Architecture
Using Magnolia in a Microservices Architecture
 
Rdma 1
Rdma 1Rdma 1
Rdma 1
 
Introduction to Thrift
Introduction to ThriftIntroduction to Thrift
Introduction to Thrift
 
DDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardDDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing Standard
 
DDS QoS Unleashed
DDS QoS UnleashedDDS QoS Unleashed
DDS QoS Unleashed
 
Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++
 
Xmpp presentation
Xmpp   presentationXmpp   presentation
Xmpp presentation
 
The Future of GlusterFS and Gluster.org
The Future of GlusterFS and Gluster.orgThe Future of GlusterFS and Gluster.org
The Future of GlusterFS and Gluster.org
 
Redis 101
Redis 101Redis 101
Redis 101
 
Scaling WebRTC applications with Janus
Scaling WebRTC applications with JanusScaling WebRTC applications with Janus
Scaling WebRTC applications with Janus
 
Apache Tez – Present and Future
Apache Tez – Present and FutureApache Tez – Present and Future
Apache Tez – Present and Future
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 

En vedette

Single instruction multiple data
Single instruction multiple dataSingle instruction multiple data
Single instruction multiple dataSyed Zaid Irshad
 
DDS Programming with IDL to C++11 tutorial
DDS Programming with IDL to C++11 tutorialDDS Programming with IDL to C++11 tutorial
DDS Programming with IDL to C++11 tutorialRemedy IT
 
Simd programming introduction
Simd programming introductionSimd programming introduction
Simd programming introductionChamp Yen
 
Ukoug15 SIMD outside and inside Oracle 12c (12.1.0.2)
Ukoug15 SIMD outside and inside Oracle 12c (12.1.0.2)Ukoug15 SIMD outside and inside Oracle 12c (12.1.0.2)
Ukoug15 SIMD outside and inside Oracle 12c (12.1.0.2)Laurent Leturgez
 
Parallel Processors (SIMD)
Parallel Processors (SIMD) Parallel Processors (SIMD)
Parallel Processors (SIMD) Ali Raza
 
Lecture 2
Lecture 2Lecture 2
Lecture 2Mr SMAK
 
Parallel computing
Parallel computingParallel computing
Parallel computingVinay Gupta
 
Plan estratgicoparalaspersonasconte aysusfamilias
Plan estratgicoparalaspersonasconte aysusfamiliasPlan estratgicoparalaspersonasconte aysusfamilias
Plan estratgicoparalaspersonasconte aysusfamiliasPepe Jara Cueva
 
B2: The OpenSplice BlendBox
B2: The OpenSplice BlendBoxB2: The OpenSplice BlendBox
B2: The OpenSplice BlendBoxAngelo Corsaro
 
Coquitlam/Burnaby Performance Network Series,Sept.2011
Coquitlam/Burnaby Performance Network Series,Sept.2011Coquitlam/Burnaby Performance Network Series,Sept.2011
Coquitlam/Burnaby Performance Network Series,Sept.2011Faye Brownlie
 
The Reality of Innovation and its Implications for Projects
The Reality of Innovation and its Implications for ProjectsThe Reality of Innovation and its Implications for Projects
The Reality of Innovation and its Implications for ProjectsLINKInnovationStudies
 
Odyssey Nov 2008
Odyssey Nov 2008Odyssey Nov 2008
Odyssey Nov 2008jhibbs
 
Crowdfunding 101
Crowdfunding 101Crowdfunding 101
Crowdfunding 101Dave Gee
 
Baile alumnado 2º ciclo 2013
Baile alumnado 2º ciclo 2013Baile alumnado 2º ciclo 2013
Baile alumnado 2º ciclo 2013XXX XXX
 
Crowdology Consumer Panelv2
Crowdology Consumer Panelv2Crowdology Consumer Panelv2
Crowdology Consumer Panelv2Lisa_Bella
 
Investment decisions for pension funds by intangible value capital
Investment decisions for pension funds by intangible value capitalInvestment decisions for pension funds by intangible value capital
Investment decisions for pension funds by intangible value capitalJAYARAMAN IYER
 

En vedette (20)

Single instruction multiple data
Single instruction multiple dataSingle instruction multiple data
Single instruction multiple data
 
DDS Programming with IDL to C++11 tutorial
DDS Programming with IDL to C++11 tutorialDDS Programming with IDL to C++11 tutorial
DDS Programming with IDL to C++11 tutorial
 
Simd programming introduction
Simd programming introductionSimd programming introduction
Simd programming introduction
 
Ukoug15 SIMD outside and inside Oracle 12c (12.1.0.2)
Ukoug15 SIMD outside and inside Oracle 12c (12.1.0.2)Ukoug15 SIMD outside and inside Oracle 12c (12.1.0.2)
Ukoug15 SIMD outside and inside Oracle 12c (12.1.0.2)
 
Parallel Processors (SIMD)
Parallel Processors (SIMD) Parallel Processors (SIMD)
Parallel Processors (SIMD)
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
 
Parallel computing
Parallel computingParallel computing
Parallel computing
 
Vagrant
VagrantVagrant
Vagrant
 
Bwg Apr09
Bwg Apr09Bwg Apr09
Bwg Apr09
 
Plan estratgicoparalaspersonasconte aysusfamilias
Plan estratgicoparalaspersonasconte aysusfamiliasPlan estratgicoparalaspersonasconte aysusfamilias
Plan estratgicoparalaspersonasconte aysusfamilias
 
B2: The OpenSplice BlendBox
B2: The OpenSplice BlendBoxB2: The OpenSplice BlendBox
B2: The OpenSplice BlendBox
 
Coquitlam/Burnaby Performance Network Series,Sept.2011
Coquitlam/Burnaby Performance Network Series,Sept.2011Coquitlam/Burnaby Performance Network Series,Sept.2011
Coquitlam/Burnaby Performance Network Series,Sept.2011
 
The Reality of Innovation and its Implications for Projects
The Reality of Innovation and its Implications for ProjectsThe Reality of Innovation and its Implications for Projects
The Reality of Innovation and its Implications for Projects
 
Odyssey Nov 2008
Odyssey Nov 2008Odyssey Nov 2008
Odyssey Nov 2008
 
Crowdfunding 101
Crowdfunding 101Crowdfunding 101
Crowdfunding 101
 
Baile alumnado 2º ciclo 2013
Baile alumnado 2º ciclo 2013Baile alumnado 2º ciclo 2013
Baile alumnado 2º ciclo 2013
 
Sph 106 Ch 10
Sph 106 Ch 10Sph 106 Ch 10
Sph 106 Ch 10
 
Sph 107 Ch 10
Sph 107 Ch 10Sph 107 Ch 10
Sph 107 Ch 10
 
Crowdology Consumer Panelv2
Crowdology Consumer Panelv2Crowdology Consumer Panelv2
Crowdology Consumer Panelv2
 
Investment decisions for pension funds by intangible value capital
Investment decisions for pension funds by intangible value capitalInvestment decisions for pension funds by intangible value capital
Investment decisions for pension funds by intangible value capital
 

Similaire à SimD The Simple DDS API

Tweeting with OpenSplice DDS
Tweeting with OpenSplice DDSTweeting with OpenSplice DDS
Tweeting with OpenSplice DDSAngelo Corsaro
 
DDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxxDDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxxAngelo Corsaro
 
Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAngelo Corsaro
 
Component Based DDS with C++11 and R2DDS
Component Based DDS with C++11 and R2DDSComponent Based DDS with C++11 and R2DDS
Component Based DDS with C++11 and R2DDSRemedy IT
 
A Gentle Introduction to OpenSplice DDS
A Gentle Introduction to OpenSplice DDSA Gentle Introduction to OpenSplice DDS
A Gentle Introduction to OpenSplice DDSAngelo Corsaro
 
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...IncQuery Labs
 
DFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
DFDL and Apache Daffodil(tm) Overview from Owl Cyber DefenseDFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
DFDL and Apache Daffodil(tm) Overview from Owl Cyber DefenseMike Beckerle
 
Integrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA, the component approachIntegrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA, the component approachRemedy IT
 
Integrating DDS into AXCIOMA - The Component Approach
Integrating DDS into AXCIOMA - The Component ApproachIntegrating DDS into AXCIOMA - The Component Approach
Integrating DDS into AXCIOMA - The Component ApproachReal-Time Innovations (RTI)
 
Getting Started with OpenSplice DDS Community Ed.
Getting Started with OpenSplice DDS Community Ed.Getting Started with OpenSplice DDS Community Ed.
Getting Started with OpenSplice DDS Community Ed.Angelo Corsaro
 
eProsima RPC over DDS - OMG June 2013 Berlin Meeting
eProsima RPC over DDS - OMG June 2013 Berlin MeetingeProsima RPC over DDS - OMG June 2013 Berlin Meeting
eProsima RPC over DDS - OMG June 2013 Berlin MeetingJaime Martin Losa
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsAngelo Corsaro
 
WinConnections Spring, 2011 - How to Securely Connect Remote Desktop Services...
WinConnections Spring, 2011 - How to Securely Connect Remote Desktop Services...WinConnections Spring, 2011 - How to Securely Connect Remote Desktop Services...
WinConnections Spring, 2011 - How to Securely Connect Remote Desktop Services...Concentrated Technology
 
Model Driven, Component Based Development for CBDDS and IDL to C++11
Model Driven, Component Based Development for CBDDS and IDL to C++11Model Driven, Component Based Development for CBDDS and IDL to C++11
Model Driven, Component Based Development for CBDDS and IDL to C++11Remedy IT
 
Integrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA, the component approachIntegrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA, the component approachRemedy IT
 

Similaire à SimD The Simple DDS API (20)

Tweeting with OpenSplice DDS
Tweeting with OpenSplice DDSTweeting with OpenSplice DDS
Tweeting with OpenSplice DDS
 
Cloudand Xchange
Cloudand XchangeCloudand Xchange
Cloudand Xchange
 
DDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxxDDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxx
 
Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part II
 
Component Based DDS with C++11 and R2DDS
Component Based DDS with C++11 and R2DDSComponent Based DDS with C++11 and R2DDS
Component Based DDS with C++11 and R2DDS
 
ISO C++ DDS PSM
ISO C++ DDS PSMISO C++ DDS PSM
ISO C++ DDS PSM
 
A Gentle Introduction to OpenSplice DDS
A Gentle Introduction to OpenSplice DDSA Gentle Introduction to OpenSplice DDS
A Gentle Introduction to OpenSplice DDS
 
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
 
OpenSplice DDS v6
OpenSplice DDS v6OpenSplice DDS v6
OpenSplice DDS v6
 
DFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
DFDL and Apache Daffodil(tm) Overview from Owl Cyber DefenseDFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
DFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
 
OpenSplice DDS v5.1
OpenSplice DDS v5.1OpenSplice DDS v5.1
OpenSplice DDS v5.1
 
Beyond messaging
Beyond messagingBeyond messaging
Beyond messaging
 
Integrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA, the component approachIntegrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA, the component approach
 
Integrating DDS into AXCIOMA - The Component Approach
Integrating DDS into AXCIOMA - The Component ApproachIntegrating DDS into AXCIOMA - The Component Approach
Integrating DDS into AXCIOMA - The Component Approach
 
Getting Started with OpenSplice DDS Community Ed.
Getting Started with OpenSplice DDS Community Ed.Getting Started with OpenSplice DDS Community Ed.
Getting Started with OpenSplice DDS Community Ed.
 
eProsima RPC over DDS - OMG June 2013 Berlin Meeting
eProsima RPC over DDS - OMG June 2013 Berlin MeetingeProsima RPC over DDS - OMG June 2013 Berlin Meeting
eProsima RPC over DDS - OMG June 2013 Berlin Meeting
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS Applications
 
WinConnections Spring, 2011 - How to Securely Connect Remote Desktop Services...
WinConnections Spring, 2011 - How to Securely Connect Remote Desktop Services...WinConnections Spring, 2011 - How to Securely Connect Remote Desktop Services...
WinConnections Spring, 2011 - How to Securely Connect Remote Desktop Services...
 
Model Driven, Component Based Development for CBDDS and IDL to C++11
Model Driven, Component Based Development for CBDDS and IDL to C++11Model Driven, Component Based Development for CBDDS and IDL to C++11
Model Driven, Component Based Development for CBDDS and IDL to C++11
 
Integrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA, the component approachIntegrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA, the component approach
 

Plus de Angelo Corsaro

zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data FabricAngelo Corsaro
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationAngelo Corsaro
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computeAngelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingAngelo Corsaro
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing InfrastructureAngelo Corsaro
 
Cyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeCyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeAngelo Corsaro
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing PlatformAngelo Corsaro
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture FourAngelo Corsaro
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture ThreeAngelo Corsaro
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture TwoAngelo Corsaro
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture OneAngelo Corsaro
 
Data Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsData Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsAngelo Corsaro
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security StandardAngelo Corsaro
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsAngelo Corsaro
 
Vortex II -- The Industrial IoT Connectivity Standard
Vortex II -- The  Industrial IoT  Connectivity StandardVortex II -- The  Industrial IoT  Connectivity Standard
Vortex II -- The Industrial IoT Connectivity StandardAngelo Corsaro
 

Plus de Angelo Corsaro (20)

Zenoh: The Genesis
Zenoh: The GenesisZenoh: The Genesis
Zenoh: The Genesis
 
zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data Fabric
 
Zenoh Tutorial
Zenoh TutorialZenoh Tutorial
Zenoh Tutorial
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query compute
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
 
Eastern Sicily
Eastern SicilyEastern Sicily
Eastern Sicily
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructure
 
Cyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeCyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT Age
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing Platform
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture Four
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture Three
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture Two
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture One
 
Data Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsData Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained Envionrments
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security Standard
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming Ruminations
 
Vortex II -- The Industrial IoT Connectivity Standard
Vortex II -- The  Industrial IoT  Connectivity StandardVortex II -- The  Industrial IoT  Connectivity Standard
Vortex II -- The Industrial IoT Connectivity Standard
 

Dernier

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 

Dernier (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

SimD The Simple DDS API

  • 1. Splice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS SimD The Simple DDS API :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Angelo Corsaro, Ph.D. Chief Technology Officer PrismTech OMG DDS SIG Co-Chair angelo.corsaro@prismtech.com Splice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS
  • 2. SimD The Simple DDS API :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Background
  • 3. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD DDS PIM/PSM Approach :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ The DDS standard is composed PIM (UML) by a PIM specified in UML and A PSM specified in IDL PSM (IDL) ‣ Language specific APIs are IDL2C derived via IDL-based mappings IDL2C++ IDL2Java (e.g. IDL2C++, etc.) C C++ Java
  • 4. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD What is the problem? :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ IDL is very good for describing DDS Topic Types, yet... ‣ IDL’s biggest strength, namely (programming) language independence, becomes its biggest weakness when trying to define APIs that are well integrated with a programming language ‣ For some programming languages (e.g. C++) the IDL2C++ mapping is “seasoned”
  • 5. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Why is this a problem? :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ Resulting DDS APIs are more complicated than they should ‣ API don’t feel natural to programmers ‣ API (esp. for C++) don’t integrate well with standard libraries nor implements common idioms/patterns.
  • 6. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD SimD: a Native C++ PSMs :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ SimD addresses the problem by deriving a new C++ PSM from DDS PIM (UML) starting directly from the PIM ‣ SimD takes advantage of all the PSM (C++) features available in C++ in order to provide a natural, productive and safe API SimD simplifies DDS Programming w/o limiting the expensiveness or introducing limitations in what possible
  • 7. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD SimD in a Nutshell :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ Provides transparent, safe, precise and real-time automatic memory management ‣ Takes advantage of C++ Template Meta-programming to automate tasks such as type registration and provide a strongly typed API (no downcast ever!) ‣ Provides a DDS API that exploits Iterators and containers as well as other C++ Standard Types ‣ DDS Events are types and are using Signal/Slots
  • 8. SimD The Simple DDS API :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Looking at a DDS App...
  • 9. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Anatomy of a DDS Application :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: DP: DomainParticipant DR: DataReader P: Publisher DW: DataWriter S: Subscribe ‣ Tree-like dependency between DP->(P,S)->(DR, DW) in creation DataWriter DataReader and life-cycle management Publisher Subscriber ‣ Example: DW alive requires DomainParticipant the parent P to be alive ‣ This tree-like dependency allows precise GC of DDS Topic Entities via reference counting Partition Domain
  • 10. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD SimD Memory Management :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ SimD distinguishes between DataWriter DataReader “Values” and “Reference” types Topic ‣ Reference types are subject to Publisher Subscriber automatic memory management ‣ DDS Entities (DP, P, S, DR, DW) DomainParticipant and Conditions are references ‣ Policies and Samples are values
  • 11. SimD The Simple DDS API :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: SimD: Step By Step
  • 12. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD DDS App Steps :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: 1. Define the Information Model 1
  • 13. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD DDS App Steps :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: 1. Define the Information Model 1 2. Connect to proper Domain/Partition 2
  • 14. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD DDS App Steps :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: 1. Define the Information Model 1 2. Connect to proper Domain/Partition 2 3. Create Topic 3
  • 15. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD DDS App Steps :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: 1. Define the Information Model 1 2. Connect to proper Domain/Partition 2 3. Create Topic 3 4. Create DataWriter 4
  • 16. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD DDS App Steps :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: 1. Define the Information Model 1 2. Connect to proper Domain/Partition 2 3. Create Topic 3 4. Create DataWriter 4 5. Create DataReader 4
  • 17. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Temperature Control App. :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: enum TemperatureScale { ! CELSIUS, ‣ Let’s assume that we need ! KELVIN, to write an application for ! FAHRENHEIT }; controlling the temperature ! of a building struct TempSensorType { ! short id; ! float temp; ‣ The first step is to be able ! float hum; to read/write the TemperatureScale scale; Temperature from sensors }; #pragma keylist TempSensor id
  • 18. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD SimD Runtime :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Exploiting the structure of DDS applications, SimD provides a Runtime class that automates some of the common boilerplate ‣ SimD Runtime joins the default-domain and creates a Pub/Sub couple connected to the default partition ‣ The default behaviour can be overridden by passing proper parameters when creating the Runtime object Runtime(); Runtime(const std::string& partition); Runtime(const std::string& partition, const std::string& domain);
  • 19. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD SimD Topic :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ SimD Topics are template classes parametrized in the Topic-Type ‣ The Topic takes care of automatically registering the type ‣ If no TopicQoS is explicitly provided to the ctor, the topic is created with default Qos Topic(const std::string& name); Topic(const std::string& name, const TopicQos& qos); Topic(const std::string& name, const std::string& type_name); Topic(const std::string& name, const std::string& type_name, const TopicQos& qos);
  • 20. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Registering the TempSensor Topic :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: TempSensor struct TempSensorType { ! short id; ! float temp; ! float hum; Default Topic QoS TemperatureScale scale; }; dds::Topic<TempSensorType> topic("TempSensor");
  • 21. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD SimD DataWriter :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ SIMD provides different DataWriter constructors allowing to control the level of customization required for the specific writer template <typename T> class dds::DataWriter : public dds::Entity { public: DataWriter(); DataWriter(Topic<T> topic) DataWriter(Topic<T> topic, const DataWriterQos& qos) DataWriter(Topic<T> topic, const DataWriterQos& qos, Publisher pub); // ... };
  • 22. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Writing Data with SimD :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ SIMD provides two generic writes as well as a method for creating a writer dedicated to a specific instance ‣ The DataInstanceWriter provides constant time writes as it does not need to look-up the key-fields dds::ReturnCode_t write(const T& sample); dds::ReturnCode_t write(const T& sample, const dds::Time_t& timestamp); dds::DataInstanceWriter<T> register_instance(const T& key);
  • 23. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Writing TempSensor Samples :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: // Join the default-domain and the “SensorData” partition dds::Runtime runtime("SensorData"); // Create the “TempSensor” Topic dds::Topic<TempSensorType> topic("TempSensor"); // Create a DataWriter dds::DataWriter<TempSensorType> dw(Topic); TempSensorType ts = {1, 26.0F, 70.0F, CELSIUS}; // Write Data dw.write(ts);
  • 24. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Writing Data with QoS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: dds::Duration latency_budget = {2, 0}; dds::Duration deadline = {4, 0}; // Create the TopicQos dds::TopicQos tqos; // Set Latency Budget, Transport Priority & Deadline tqos.set_latency_budget(latency_budget); tqos.set_deadline(deadline); tqos.set_priority(tsPrio); // Create the “TempSensor” Topic dds::Topic<TempSensorType> topic("TempSensor", tqos); dds::DataWriterQos dwqos(tqos); // Create a DataWriter dds::DataWriter<TempSensorType> dw(topic, dwqos);
  • 25. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD SimD DataReader :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ SIMD provides different DataReader constructors allowing to control the level of customization required for the specific reader template <typename T> class dds::DataReader : public dds::Entity { public: DataReader(); DataReader(Topic<T> topic) DataReader(Topic<T> topic, const DataReader Qos& qos) DataReader(Topic<T> topic, const DataReader Qos& qos, Subscriber pub); // ... };
  • 26. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Reading with SimD :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ SimD supports legacy reads using Sequences along with std::vector and iterator-based(Forward + Output) read/take API void read(TSeq& samples, dds::SampleInfoSeq& infos); void read(std::vector<T>& data, std::vector<dds::SampleInfo> info); template <typename DataForwardIterator, typename InfoForwardIterator> uint32_t read(DataForwardIterator data_begin, InfoForwardIterator info_begin, uint32_t max_samples); template <typename DataOutputIterator, typename InfoOutputIterator> uint32_t read(DataOutputIterator data_begin, InfoOutputIterator info_begin);
  • 27. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Swiss Army Knife Read :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ The most generic read supported by DDS is provided through the TSeq, std::vector and iterator variations void read(std::vector<T>& data, std::vector<dds::SampleInfo> info, dds::SampleStateMask samples_state, dds::ViewStateMask views_state, dds::InstanceStateMask instances_state)
  • 28. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Reading TempSensor Samples :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: // Join the default-domain and the “SensorData” partition dds::Runtime runtime("SensorData"); // Create the “TempSensor” Topic dds::Topic<TempSensorType> topic("TempSensor"); // Create a DataReader dds::DataReader<TempSensorType> dr(topic); std::vector<TemSensorType> data; std::vector<SampleInfo> info; while (true) { dr.read(data, info); for (int i =0; i < data.length(); ++i) std::cout << data[i] << std::endl; sleep(1); }
  • 29. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Reading with QoS :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: dds::Duration latency_budget = {2, 0}; dds::Duration deadline = {4, 0}; // Create the TopicQos dds::TopicQos tqos; // Set Latency Budget, Transport Priority & Deadline tqos.set_latency_budget(latency_budget); tqos.set_deadline(deadline); tqos.set_priority(tsPrio); // Create the Topic dds::Topic<TempSensorType> tsTopic("TempSensor", tqos); // Create the DataReaderQos from TopicQos dds::DataReaderQos drqos(tqos); // Create the DataReader dds::DataReader<TempSensorType> dr(tsTopic, drqos);
  • 30. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD SimD WaitSets :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ SimD WaitSets provides an improved usability along with new behaviour ‣ SimD WaitSets and Conditions are strongly typed ‣ SimD WaitSet rely on C++ functors to handle condition triggering (handling is done in the context of a user call) ‣ Let’s see them in action...
  • 31. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Condition Handler :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: class TempSensorDataHandler { public: void operator() (dds::DataReader<TempSensorType>& reader) { std::vector<TempSensorType> data; std::vector<dds::SampleInfo> info; reader.read(data, info); //[NOTE #1] Do whatever is needed with the data } };
  • 32. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD SimD WaitSets :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: dds::DataReader<TempSensorType> dr(topic); //[NOTE #4] Wait for some condition to //[NOTE #1]: Create an instance of // become active, and retrieve all active //the handler // conditions TempSensorDataHandler handler; auto conds = ws.wait(timeout); //[NOTE #2]: Create a read condition for //[NOTE #5] Execute the condition handlers // the given reader for (auto i = conds.begin(); auto rcond = i < conds.end(); ++i) dr.create_readcondition(handler); i->execute(); //[NOTE #3]: Create a Waitset and attach // the condition //[NOTE #5] Automatically dispatch the dds::WaitSet ws; // condition handlers when conditions ws.attach(rcond); //are notified ws.dispatch(timeout); dds::Duration timeout = {1, 0};
  • 33. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD SimD “Listeners” :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ SimD takes a different approach to DDS event notifications ‣ SimD associate a type to each event that DDS entities might ever raise ‣ Handlers can be connected only for supported events ‣ Handlers can be attached to individual events ‣ Handler can be any C++ callable entity that matches the expected signature, e.g., function, functor, methods
  • 34. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Event Handler :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: class TempSensorDataHandler { public: void handle_data(dds::DataReader<TempSensorType>& reader) { std::cout << "Reading..." << std::endl; std::vector<TempSensorType> data; std::vector<dds::SampleInfo> info; reader.read(data, info); //[NOTE #1] Do whatever is needed with the data } };
  • 35. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Registering Handler :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: dds::DataReader<TempSensorType> dr(topic); //[NOTE #1]: Create an instance of the handler TempSensorDataHandler handler; auto func = boost::bind(TempSensorDataHandler::handle_data, &handler, _1); //[NOTE #2]: Register the handler for the relevant event auto connection = dr.connect<on_data_available>(func);
  • 36. SimD The Simple DDS API :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Demo
  • 37. SimD The Simple DDS API :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: StatuS
  • 38. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD SimD Status :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ SimD has been an incubator for the new ISO C++ DDS PSM ‣ The code is already used by several OpenSplice DDS users in both R&D as well as commercial applications ‣ SimD API will transition to v1.x only after the adoption of the new C++ PSM so to ensure stable API with v1.x
  • 39. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD SimD Availability :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ SimD is an OpenSource project licensed under LGPL ‣ SimD is available for Linux/ Unix/Windows at: http://code.google.com/p/simd-cxx/
  • 40. SimD The Simple DDS API :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: Summing Up +/-
  • 41. OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD Summing Up :: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com :: ‣ SimD provides a safe, efficient and productive C++ API for DDS ‣ SimD has been instrumental in experimenting ideas for evolving the ISO C++ DDS PSM ‣ SimD code is already pretty robust and used by a large community