SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
DDS-PSM-Cxx v1.0
                 and
                 simd-cxx
OpenSplice DDS




                            Angelo CORSARO, Ph.D.
                                    Chief Technology Officer
                                    OMG DDS Sig Co-Chair
                                               PrismTech
                            angelo.corsaro@prismtech.com
OpenSplice DDS


                                                                                    History on a Napkin




           Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
OpenSplice DDS




           Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
OpenSplice DDS




    La Vallee...




                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
DDS-PSM-Cxx v1.0
                     Overview
OpenSplice DDS
Anatomy of a DDS Application
                 [DDS C++ API 2010]

                 Domain
                                                                                        Domain




                                                                                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                   auto dp = DomainParticipant(domainId);
                                                                                       Participant

                 Session
                   // Create a Topic
                   auto topic = Topic<ShapeType>(dp, “Circle”);       Publisher
          Topic
         Subscriber
OpenSplice DDS




                   // Create a Publisher / Subscriber
                   auto pub = Publisher(dp);
                   auto sub = Subscriber(dp);


                 Reader/Writers for User Defined for Types             DataWriter
                        DataReader
                   // Create a DataWriter/DataWriter
                   auto writer = DataWriter<ShapeType>(pub, topic);                 Reader/Writer for
                   auto reader = DataReader<ShapeType>(sub, topic);
                                                                                    application defined
                                                                                       Topic Types
Anatomy of a DDS Application
                 [DDS C++ API 2010]

                 Domain
                                                                                     Domain




                                                                                                                Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                   auto dp = DomainParticipant(domainId);
                                                                                    Participant

                 Session
                   // Create a Topic
                   auto topic = Topic<ShapeType>(dp, “Circle”);    Publisher
          Topic
         Subscriber
OpenSplice DDS




                   // Create a Publisher / Subscriber
                   auto pub = Publisher(dp);
                   auto sub = Subscriber(dp);


                 Reader/Writers for User Defined for Types          DataWriter
                        DataReader
                   // Write data
                   writer.write(ShapeType(“RED”, 131, 107, 89));                 Reader/Writer for
                   // But you can also write like this...
                   writer << ShapeType(“RED”, 131, 107, 89);
                                                                                 application defined
                                                                                    Topic Types
                   // Read new data (loaned)
                   auto data = reader.read();
Content-Based Data Selection
OpenSplice DDS
Filters and Queries                                Application


                  ☐   DDS Filters allow to control what gets
                      into a DataReader cache




                                                                                        Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                      Query
                  ☐   DDS Queries allow to control what gets
                      out of a DataReader cache                    DataReader

                      Filters are defined by means of
OpenSplice DDS




                  ☐
                                                                           ...
                      ContentFilteredTopics




                                                                 ...
                                                                 ...



                                                                                  ...
                  ☐   Queries operate in conjunction with        DataReader Cache
                      read operations
                                                                       Filter
                  ☐   Filters and Queries are expressed as SQL
                      where clauses
struct ShapeType {



                 Filters
                                                                                       @Key
                                                                                       string   color;
                                                                                       long   x;
                                                                                       long   y;
                 [C++ API]                                                          };
                                                                                       long   shapesize;




                                                                                                           Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                         /**
                          * NOTE: The Scala API if not provided with DP/Sub/Pub assumes
                          * default domains and default partition.
                          **/
                         // Create a Topic
                         auto topic = Topic<ShapeType>(dp, “Circle”);
OpenSplice DDS




                         // Define filter expression and parameters
                         auto filter = Filter(“x < 100 AND y < 200”);

                         // Define content filtered topic
                         auto cftopic =
                           ContentFilteredTopic<ShapeType>(“CFCircle”, topic, filter)

                         // Create a DataReader for the content-filtered Topic
                         auto dr = DataReader<ShapeType>(sub,cftopic)
struct ShapeType {



                 Query
                                                                            @Key
                                                                            string   color;
                                                                            long   x;
                                                                            long   y;
                 [C++ API]                                               };
                                                                            long   shapesize;




                                                                                                Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                         // Define filter expression and parameters
                         auto dr = DataReader<ShapeType>(sub, topic)
                         val query = Query(dr, “x < 100 AND y < 200”);
OpenSplice DDS




                         dr.select()
                             .content(query)
                             .read();
Instances
                  ☐   DDS provides a very efficient way of reading data belonging to a




                                                                                            Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      specific Topic Instance

                  ☐   Obviously, one could use queries to match the key’s value, but this
                      is not as efficient as the special purpose instance selector
OpenSplice DDS




                                    auto handle =
                                       dr.lookup_instance(ShapeType(“RED”, 0, 0, 0));

                                    auto data =
                                         dr.select()
                                          .instance(handle)
                                          .read();
State-Based Selection
OpenSplice DDS
Sample, Instance, and View State
                  ☐   The samples included in the DataReader cache have associated




                                                                                            Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      some meta-information which, among other things, describes the
                      status of the sample and its associated stream/instance
                  ☐   The Sample State (READ, NOT_READ) allows to distinguish between
OpenSplice DDS




                      new samples and samples that have already been read
                  ☐   The View State (NEW, NOT_NEW) allows to distinguish a new
                      instance from an existing one
                  ☐   The Intance State (ALIVE, NOT_ALIVE_DISPOSED,
                      NOT_ALIVE_NO_WRITERS) allows to track the life-cycle transitions of
                      the instance to which a sample belongs
State Selector in Action
                 [C++ API]




                                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                         // Read only new samples
                         auto data = dr.read()

                         // Read any samples from live instances
                         auto data =
                                dr.select()
OpenSplice DDS




                                  .state(DataState::any_data())
                                  .read();
Putting all Together
                 [C++ API]




                                                                                      Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   Selectors can be composed in a flexible and expressive manner
OpenSplice DDS




                              auto data =
                                 dr.select()
                                      .content(query)
                                      .state(data_state)
                                      .instance(handle)
                                   .read();
QoS Provider
                  ☐   The new C++ and Java APIs introduce the concept of a QoS




                                                                                                                                 Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      Provider

                  ☐   This class allows to externally define policies and decouples the
                      mechanism used to define and access policy definition with policy
OpenSplice DDS




                      creation

                         	
  	
  	
  	
  	
  	
  //	
  QosProvider...
                         	
  	
  	
  	
  	
  	
  QosProvider	
  qos_provider(
                         	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "http://www.opensplice.org/demo/config/qos.xml",
                         	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "ishapes-­‐profile");

                         	
  	
  	
  	
  	
  	
  DataReader<ShapeType>	
  dr(sub,	
  topic,	
  qos_provider.datareader_qos());
In Summary




                                                                                          Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   simd-cxx v0.x available at http://code.google.com/p/simd-cxx
                      was the major influencer of the new DDS-PSM-Cxx standard. Yet
                      simd-cxx v0.x does not comply with the DDS-PSM-Cxx
OpenSplice DDS




                  ☐   simd-cxx v1.0 available at http://github.com/kydos/simd-cxx is an
                      alpha implementation of the DDS-PSM-Cxx
OpenSplice DDS
References




                                                                                                                          Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  OpenSplice | DDS                                                    Escalier
                  ¥ #1 OMG DDS Implementation   ¥ Fastest growing JVM Language      ¥ Scala API for OpenSplice DDS
                  ¥ Open Source                 ¥ Open Source                       ¥ Open Source
                  ¥ www.opensplice.org          ¥ www.scala-lang.org                ¥ github.com/kydos/escalier
OpenSplice DDS




                 ¥ Simple C++ API for DDS       ¥ DDS-PSM-Java for OpenSplice DDS   ¥ DDS-based Advanced Distributed
                 ¥ Open Source                  ¥ Open Source                          Algorithms Toolkit
                 ¥ github.com/kydos/simd-cxx    ¥ github.com/kydos/simd-java        ¥ Open Source
                                                                                      ¥ github.com/kydos/dada
:: Connect with Us ::



                   ¥opensplice.com             ¥forums.opensplice.org
                                                                                         ¥@acorsaro
                   ¥opensplice.org             ¥opensplicedds@prismtech.com                 ¥@prismtech
OpenSplice DDS




                                                                                         ¥ crc@prismtech.com
                                                                                         ¥sales@prismtech.com
                 ¥youtube.com/opensplicetube          ¥slideshare.net/angelo.corsaro

Contenu connexe

En vedette

Crowdology Consumer Panelv2
Crowdology Consumer Panelv2Crowdology Consumer Panelv2
Crowdology Consumer Panelv2
Lisa_Bella
 
Reviving keynes animal spirits for your business
Reviving keynes animal spirits for your businessReviving keynes animal spirits for your business
Reviving keynes animal spirits for your business
JAYARAMAN IYER
 
Hima, esitys cardiff
Hima, esitys cardiffHima, esitys cardiff
Hima, esitys cardiff
Aija Hietanen
 
Sarah Robins Powell resume/work sample
Sarah Robins Powell resume/work sampleSarah Robins Powell resume/work sample
Sarah Robins Powell resume/work sample
sayster
 

En vedette (20)

OpenSplice DDS v6
OpenSplice DDS v6OpenSplice DDS v6
OpenSplice DDS v6
 
Use of the OMG DDS standard in Simulation. A new Way for developing Real Time...
Use of the OMG DDS standard in Simulation. A new Way for developing Real Time...Use of the OMG DDS standard in Simulation. A new Way for developing Real Time...
Use of the OMG DDS standard in Simulation. A new Way for developing Real Time...
 
Sph 107 Ch 12
Sph 107 Ch 12Sph 107 Ch 12
Sph 107 Ch 12
 
Designing the Mobile Experience
Designing the Mobile ExperienceDesigning the Mobile Experience
Designing the Mobile Experience
 
Elaboración jabón 2016
Elaboración jabón 2016Elaboración jabón 2016
Elaboración jabón 2016
 
Crowdology Consumer Panelv2
Crowdology Consumer Panelv2Crowdology Consumer Panelv2
Crowdology Consumer Panelv2
 
Homeselling Proposal
Homeselling ProposalHomeselling Proposal
Homeselling Proposal
 
Oral language Primary Delta BJF
Oral language Primary Delta BJFOral language Primary Delta BJF
Oral language Primary Delta BJF
 
Kerstwensen
KerstwensenKerstwensen
Kerstwensen
 
How to Play Well with Others (A Program on Dealing with Difficult People)
How to Play Well with Others (A Program on Dealing with Difficult People)How to Play Well with Others (A Program on Dealing with Difficult People)
How to Play Well with Others (A Program on Dealing with Difficult People)
 
Reviving keynes animal spirits for your business
Reviving keynes animal spirits for your businessReviving keynes animal spirits for your business
Reviving keynes animal spirits for your business
 
Vagrant
VagrantVagrant
Vagrant
 
Langley primary
Langley primaryLangley primary
Langley primary
 
Hima, esitys cardiff
Hima, esitys cardiffHima, esitys cardiff
Hima, esitys cardiff
 
Dialog prestasi SK Tenang Stesen
Dialog prestasi SK Tenang StesenDialog prestasi SK Tenang Stesen
Dialog prestasi SK Tenang Stesen
 
Sarah Robins Powell resume/work sample
Sarah Robins Powell resume/work sampleSarah Robins Powell resume/work sample
Sarah Robins Powell resume/work sample
 
April.Prince Rupert.middle
April.Prince Rupert.middleApril.Prince Rupert.middle
April.Prince Rupert.middle
 
ikh311-02
ikh311-02ikh311-02
ikh311-02
 
Ironhack presentation
Ironhack presentationIronhack presentation
Ironhack presentation
 
ikh323-03
ikh323-03ikh323-03
ikh323-03
 

Similaire à DDS-PSM-Cxx and simd-cxx

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
 
Open splicedds espercep-webinar
Open splicedds espercep-webinarOpen splicedds espercep-webinar
Open splicedds espercep-webinar
Tomasz Waszczyk
 

Similaire à DDS-PSM-Cxx and simd-cxx (20)

Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part II
 
SimD
SimDSimD
SimD
 
The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part II
 
DDS Made Simple
DDS Made SimpleDDS Made Simple
DDS Made Simple
 
Classical Distributed Algorithms with DDS
Classical Distributed Algorithms with DDSClassical Distributed Algorithms with DDS
Classical Distributed Algorithms with DDS
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDS
 
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++
 
The DDS Tutorial - Part I
The DDS Tutorial - Part IThe DDS Tutorial - Part I
The DDS Tutorial - Part I
 
ISO C++ DDS PSM
ISO C++ DDS PSMISO C++ DDS PSM
ISO C++ DDS PSM
 
PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part I
 
Open splicedds espercep-webinar
Open splicedds espercep-webinarOpen splicedds espercep-webinar
Open splicedds espercep-webinar
 
DDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardDDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing Standard
 
Overloading in Overdrive: A Generic Data-Centric Messaging Library for DDS
Overloading in Overdrive: A Generic Data-Centric Messaging Library for DDSOverloading in Overdrive: A Generic Data-Centric Messaging Library for DDS
Overloading in Overdrive: A Generic Data-Centric Messaging Library for DDS
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDS
 
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeDesktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex Café
 
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
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applications
 
DDS QoS Unleashed
DDS QoS UnleashedDDS QoS Unleashed
DDS QoS Unleashed
 

Plus de Angelo 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
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming Ruminations
 

Dernier

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
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
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
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
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
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
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
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
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
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
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

DDS-PSM-Cxx and simd-cxx

  • 1. DDS-PSM-Cxx v1.0 and simd-cxx OpenSplice DDS Angelo CORSARO, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com
  • 2. OpenSplice DDS History on a Napkin Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • 3. OpenSplice DDS Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • 4. OpenSplice DDS La Vallee... Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • 5. DDS-PSM-Cxx v1.0 Overview OpenSplice DDS
  • 6. Anatomy of a DDS Application [DDS C++ API 2010] Domain Domain Copyright  2011,  PrismTech  –    All  Rights  Reserved. auto dp = DomainParticipant(domainId); Participant Session // Create a Topic auto topic = Topic<ShapeType>(dp, “Circle”); Publisher Topic Subscriber OpenSplice DDS // Create a Publisher / Subscriber auto pub = Publisher(dp); auto sub = Subscriber(dp); Reader/Writers for User Defined for Types DataWriter DataReader // Create a DataWriter/DataWriter auto writer = DataWriter<ShapeType>(pub, topic); Reader/Writer for auto reader = DataReader<ShapeType>(sub, topic); application defined Topic Types
  • 7. Anatomy of a DDS Application [DDS C++ API 2010] Domain Domain Copyright  2011,  PrismTech  –    All  Rights  Reserved. auto dp = DomainParticipant(domainId); Participant Session // Create a Topic auto topic = Topic<ShapeType>(dp, “Circle”); Publisher Topic Subscriber OpenSplice DDS // Create a Publisher / Subscriber auto pub = Publisher(dp); auto sub = Subscriber(dp); Reader/Writers for User Defined for Types DataWriter DataReader // Write data writer.write(ShapeType(“RED”, 131, 107, 89)); Reader/Writer for // But you can also write like this... writer << ShapeType(“RED”, 131, 107, 89); application defined Topic Types // Read new data (loaned) auto data = reader.read();
  • 9. Filters and Queries Application ☐ DDS Filters allow to control what gets into a DataReader cache Copyright  2011,  PrismTech  –    All  Rights  Reserved. Query ☐ DDS Queries allow to control what gets out of a DataReader cache DataReader Filters are defined by means of OpenSplice DDS ☐ ... ContentFilteredTopics ... ... ... ☐ Queries operate in conjunction with DataReader Cache read operations Filter ☐ Filters and Queries are expressed as SQL where clauses
  • 10. struct ShapeType { Filters @Key string color; long x; long y; [C++ API] }; long shapesize; Copyright  2011,  PrismTech  –    All  Rights  Reserved. /** * NOTE: The Scala API if not provided with DP/Sub/Pub assumes * default domains and default partition. **/ // Create a Topic auto topic = Topic<ShapeType>(dp, “Circle”); OpenSplice DDS // Define filter expression and parameters auto filter = Filter(“x < 100 AND y < 200”); // Define content filtered topic auto cftopic = ContentFilteredTopic<ShapeType>(“CFCircle”, topic, filter) // Create a DataReader for the content-filtered Topic auto dr = DataReader<ShapeType>(sub,cftopic)
  • 11. struct ShapeType { Query @Key string color; long x; long y; [C++ API] }; long shapesize; Copyright  2011,  PrismTech  –    All  Rights  Reserved. // Define filter expression and parameters auto dr = DataReader<ShapeType>(sub, topic) val query = Query(dr, “x < 100 AND y < 200”); OpenSplice DDS dr.select() .content(query) .read();
  • 12. Instances ☐ DDS provides a very efficient way of reading data belonging to a Copyright  2011,  PrismTech  –    All  Rights  Reserved. specific Topic Instance ☐ Obviously, one could use queries to match the key’s value, but this is not as efficient as the special purpose instance selector OpenSplice DDS auto handle = dr.lookup_instance(ShapeType(“RED”, 0, 0, 0)); auto data = dr.select() .instance(handle) .read();
  • 14. Sample, Instance, and View State ☐ The samples included in the DataReader cache have associated Copyright  2011,  PrismTech  –    All  Rights  Reserved. some meta-information which, among other things, describes the status of the sample and its associated stream/instance ☐ The Sample State (READ, NOT_READ) allows to distinguish between OpenSplice DDS new samples and samples that have already been read ☐ The View State (NEW, NOT_NEW) allows to distinguish a new instance from an existing one ☐ The Intance State (ALIVE, NOT_ALIVE_DISPOSED, NOT_ALIVE_NO_WRITERS) allows to track the life-cycle transitions of the instance to which a sample belongs
  • 15. State Selector in Action [C++ API] Copyright  2011,  PrismTech  –    All  Rights  Reserved. // Read only new samples auto data = dr.read() // Read any samples from live instances auto data = dr.select() OpenSplice DDS .state(DataState::any_data()) .read();
  • 16. Putting all Together [C++ API] Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Selectors can be composed in a flexible and expressive manner OpenSplice DDS auto data = dr.select() .content(query) .state(data_state) .instance(handle) .read();
  • 17. QoS Provider ☐ The new C++ and Java APIs introduce the concept of a QoS Copyright  2011,  PrismTech  –    All  Rights  Reserved. Provider ☐ This class allows to externally define policies and decouples the mechanism used to define and access policy definition with policy OpenSplice DDS creation            //  QosProvider...            QosProvider  qos_provider(                        "http://www.opensplice.org/demo/config/qos.xml",                        "ishapes-­‐profile");            DataReader<ShapeType>  dr(sub,  topic,  qos_provider.datareader_qos());
  • 18. In Summary Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ simd-cxx v0.x available at http://code.google.com/p/simd-cxx was the major influencer of the new DDS-PSM-Cxx standard. Yet simd-cxx v0.x does not comply with the DDS-PSM-Cxx OpenSplice DDS ☐ simd-cxx v1.0 available at http://github.com/kydos/simd-cxx is an alpha implementation of the DDS-PSM-Cxx
  • 20. References Copyright  2011,  PrismTech  –    All  Rights  Reserved. OpenSplice | DDS Escalier ¥ #1 OMG DDS Implementation ¥ Fastest growing JVM Language ¥ Scala API for OpenSplice DDS ¥ Open Source ¥ Open Source ¥ Open Source ¥ www.opensplice.org ¥ www.scala-lang.org ¥ github.com/kydos/escalier OpenSplice DDS ¥ Simple C++ API for DDS ¥ DDS-PSM-Java for OpenSplice DDS ¥ DDS-based Advanced Distributed ¥ Open Source ¥ Open Source Algorithms Toolkit ¥ github.com/kydos/simd-cxx ¥ github.com/kydos/simd-java ¥ Open Source ¥ github.com/kydos/dada
  • 21. :: Connect with Us :: ¥opensplice.com ¥forums.opensplice.org ¥@acorsaro ¥opensplice.org ¥opensplicedds@prismtech.com ¥@prismtech OpenSplice DDS ¥ crc@prismtech.com ¥sales@prismtech.com ¥youtube.com/opensplicetube ¥slideshare.net/angelo.corsaro