SlideShare a Scribd company logo
1 of 41
Download to read offline
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

More Related Content

What's hot

Active dataguard
Active dataguardActive dataguard
Active dataguardManoj Kumar
 
20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies20 Tips for OpenSplice Newbies
20 Tips for OpenSplice NewbiesAngelo Corsaro
 
Performance Schema for MySQL troubleshooting
Performance Schema for MySQL troubleshootingPerformance Schema for MySQL troubleshooting
Performance Schema for MySQL troubleshootingSveta Smirnova
 
DDL And DML
DDL And DMLDDL And DML
DDL And DMLpnp @in
 
Database System Concepts and Architecture
Database System Concepts and ArchitectureDatabase System Concepts and Architecture
Database System Concepts and Architecturesontumax
 
Kskv kutch university DBMS unit 1 basic concepts, data,information,database,...
Kskv kutch university DBMS unit 1  basic concepts, data,information,database,...Kskv kutch university DBMS unit 1  basic concepts, data,information,database,...
Kskv kutch university DBMS unit 1 basic concepts, data,information,database,...Dipen Parmar
 
MySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA ToolMySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA ToolMiguel Araújo
 
SQL Server Deployments made easy with DACPAC
SQL Server Deployments made easy with DACPACSQL Server Deployments made easy with DACPAC
SQL Server Deployments made easy with DACPACSanil Mhatre
 
SQL Joins With Examples | Edureka
SQL Joins With Examples | EdurekaSQL Joins With Examples | Edureka
SQL Joins With Examples | EdurekaEdureka!
 
Advanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkAdvanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkRiyaj Shamsudeen
 

What's hot (20)

Active dataguard
Active dataguardActive dataguard
Active dataguard
 
Chapter25
Chapter25Chapter25
Chapter25
 
Active Directory
Active Directory Active Directory
Active Directory
 
Elmasri Navathe DBMS Unit-1 ppt
Elmasri Navathe DBMS Unit-1 pptElmasri Navathe DBMS Unit-1 ppt
Elmasri Navathe DBMS Unit-1 ppt
 
20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies
 
Performance Schema for MySQL troubleshooting
Performance Schema for MySQL troubleshootingPerformance Schema for MySQL troubleshooting
Performance Schema for MySQL troubleshooting
 
NetWeaver Gateway- Introduction to OData
NetWeaver Gateway- Introduction to ODataNetWeaver Gateway- Introduction to OData
NetWeaver Gateway- Introduction to OData
 
DDL And DML
DDL And DMLDDL And DML
DDL And DML
 
Database System Concepts and Architecture
Database System Concepts and ArchitectureDatabase System Concepts and Architecture
Database System Concepts and Architecture
 
ASM
ASMASM
ASM
 
Kskv kutch university DBMS unit 1 basic concepts, data,information,database,...
Kskv kutch university DBMS unit 1  basic concepts, data,information,database,...Kskv kutch university DBMS unit 1  basic concepts, data,information,database,...
Kskv kutch university DBMS unit 1 basic concepts, data,information,database,...
 
MySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA ToolMySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA Tool
 
Rapid Home Provisioning
Rapid Home ProvisioningRapid Home Provisioning
Rapid Home Provisioning
 
Acid properties
Acid propertiesAcid properties
Acid properties
 
SQL Server Deployments made easy with DACPAC
SQL Server Deployments made easy with DACPACSQL Server Deployments made easy with DACPAC
SQL Server Deployments made easy with DACPAC
 
MySql slides (ppt)
MySql slides (ppt)MySql slides (ppt)
MySql slides (ppt)
 
Database ms priyanka
Database ms priyankaDatabase ms priyanka
Database ms priyanka
 
SQL Joins With Examples | Edureka
SQL Joins With Examples | EdurekaSQL Joins With Examples | Edureka
SQL Joins With Examples | Edureka
 
Advanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkAdvanced RAC troubleshooting: Network
Advanced RAC troubleshooting: Network
 
Oracle DBA
Oracle DBAOracle DBA
Oracle DBA
 

Viewers also liked

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
 
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
 
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
 

Viewers also liked (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)
 
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++
 
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
 

Similar to SimD

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
 
The DDS Tutorial - Part I
The DDS Tutorial - Part IThe DDS Tutorial - Part I
The DDS Tutorial - Part IAngelo Corsaro
 
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
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution ServiceAngelo Corsaro
 
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
 

Similar to SimD (20)

DDS QoS Unleashed
DDS QoS UnleashedDDS QoS Unleashed
DDS QoS Unleashed
 
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
 
The DDS Tutorial - Part I
The DDS Tutorial - Part IThe DDS Tutorial - Part I
The DDS Tutorial - Part I
 
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
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
 
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
 

More from 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
 

More from 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
 

Recently uploaded

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
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
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 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...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

SimD

  • 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