SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
Distributed State,
                 Events and Commands
                 :: with OpenSplice DDS
OpenSplice DDS




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




        Foundations
Defining a System
                                                      Cyber/Physical.




                                                                                       Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                         World.
                 ¨   A set of interacting
                                                        System.
                      or interdependent      Input&     !  State&            Output&
                      parts forming an                  !  Transi"ons&
OpenSplice DDS




                      integrated whole
                                                            s"mulus&
                                                       (events/commands)&&
Defining a Distributed System
                                                      Cyber/Physical.




                                                                                       Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                         World.
                 ¨   A Distributed System              Distributed.
                      is a System whose      Input&
                                                        System.
                                                                             Output&
                                                        !  State&
                      parts can only                    !  Transi"ons&

                      interact by
OpenSplice DDS




                      communicating over                    s"mulus&
                      a network                        (events/commands)&&
State in a Distributed System
                 ¨   The State of a distributed system
                      is the collection of the states of its            Cyber/Physical.




                                                                                                         Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      parts plus the stimulus currently                    World.
                      propagating through the system
                                                                          Distributed.
                 ¨   As Distributed Systems don’t                        System.
                                                               Input&                          Output&
                      share memory, one problem to                        !  State&
OpenSplice DDS




                                                                          !  Transi"ons&
                      address is how to access arbitrary
                      subsets of its state (or of its parts)
                                                                              s"mulus&
                 ¨   The other problem is the                           (events/commands)&&
                      consistency of this state...
Stimulus in a Distributed System
                                                                         Cyber/Physical.




                                                                                                          Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨   Internal and Environmental                            World.
                      Stimuli in a distributed
                      system are used to                                   Distributed.
                                                                           System.
                      ¨   evolve the system state              Input&                          Output&
                                                                           !  State&
OpenSplice DDS




                           (commands, i.e. do something)                   !  Transi"ons&

                      ¨   notify particular condition on the
                           state (events, i.e. something
                           happened)                                           s"mulus&
                                                                          (events/commands)&&
State vs Stimulus
                                                        Temp            State%




                                                                                   Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨   The state of a system is always
                      defined to have a value
                                                                          time
OpenSplice DDS




                                                        OverheatAlarm   S&mulus%
                 ¨   A Stimulus only exists at a
                      particular point in time

                                                                            time
Are Commands Different?
                                                            Cyber/Phisycal                       System
                 ¨   Commands are a kind of stimulus           World
                                                                              Do Something

                      that express the need for the




                                                                                                          Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      system to do something
                                                                              Done

                 ¨   As commands have the “do
                      something” connotation, it is often                              Asynchronous*
                      useful to synchronously be
OpenSplice DDS




                      informed that the “command” has        Cyber/Phisycal
                                                                 World
                                                                                                 System


                      been executed                                           DoSomething



                 ¨   However systems can be built with
                      both synchronous as well as                               Done



                      asynchronous commands
                                                                                         Synchronous*
State Events and
OpenSplice DDS




                 Commands in DDS
OpenSplice DDS




           State in DDS
Distributed State with DDS




                                                                            Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨   The “public” state of the elements making the
                      distributed system can easily be captured via topic
                      definitions

                      Representing state with topics is more a matter of
OpenSplice DDS




                 ¨

                      discipline w.r.t. to the QoS being used and the way
                      in which it is accessed
State’s DDS QoS
                 Topics representing state should have the following QoS Settings




                                                                                    Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨   RELIABILITY = RELIABLE
                 ¨   HISTORY = KEEP_LAST(1)

                      DURABILITY = (TRANSIENT |PERSISTENT)
OpenSplice DDS




                 ¨


                 ¨   OWNERSHIP = EXCLUSIVE
                 ¨   DESTINATION_ORDER = SOURCE_TIMESTAMP
Soft-State’s DDS QoS
                 Topics representing soft-state, meaning state that is periodically




                                                                                      Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 updated, should have the following QoS Settings
                 ¨   RELIABILITY = BEST_EFFORT
                 ¨   HISTORY = KEEP_LAST(1)
OpenSplice DDS




                 ¨   DURABILITY = VOLATILE
                 ¨   OWNERSHIP = EXCLUSIVE
                 ¨   DESTINATION_ORDER = SOURCE_TIMESTAMP
Accessing State in DDS
                 ¨   The DataReader.read operation should be used to




                                                                                                         Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      access topics representing state
                      ¨   This ensures that the last value for the state will be kept in DDS and will
                           be readable again and again

                 ¨   The DataReader data should be accessed with the
OpenSplice DDS




                      following flags:
                      ¨   ANY_SAMPLE_STATE
                      ¨   ALIVE_INSTANCE_STATE
                      ¨   ANY_VIEW_STATE
Example            [1/3]




                                                                         Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨   A Robot Position in 2D is an example of state
                 ¨   Let’s assume that the Robot only update position
                      when it moves
OpenSplice DDS




                 ¨   Topic Type:
                                        struct RobotPosition {
                                           @key
                                           long rid;
                                           long x;
                                           long y;
                                        };
Example               [2/3]



                      The Topic and DataReader would be constructed as




                                                                                             Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨

                      follows
                            // Create Topic Qos
                            val tQos =
                                TopicQos() <= KeepLastHistory(1)
                                           <= Reliable()
                                           <= TransientDurability()
OpenSplice DDS




                                           <= ExclusiveOwnership()
                                           <= SourceTimestamp();
                            // Create Topic
                            val rpt = Topic[RobotPosition](“RobotPosition”,topicQos)

                            // Create DataReader
                            val rpdr = DataReader[RobotPosition](rpt, DataReaderQos(tqos))
Example               [3/3]




                                                                      Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨   Data can be read as follows
                            // Read data
                            val data = rpdr.read(ReadState.AllData)

                            // Or specific to Escalier
                            val data = rpdr.history
OpenSplice DDS
OpenSplice DDS




           Events in DDS
Distributed Events with DDS




                                                                            Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨   Events raised by a distributed system can be easily
                      captured via topic definitions
                 ¨   Representing events with topics is more a matter of
                      discipline w.r.t. to the QoS being used and the way
OpenSplice DDS




                      in which it is accessed
                 ¨   Event topics are often keyless
Events’ DDS QoS
                 Events should have the following QoS Settings




                                                                 Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨   RELIABILITY = RELIABLE
                 ¨   HISTORY = KEEP_ALL

                      DURABILITY = VOLATILE
OpenSplice DDS




                 ¨


                 ¨   OWNERSHIP = SHARED
                 ¨   DESTINATION_ORDER = SOURCE_TIMESTAMP
Events’ DDS QoS
                 Events should have the following QoS Settings




                                                                 Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨   RELIABILITY = RELIABLE
                 ¨   HISTORY = KEEP_ALL

                      DURABILITY = VOLATILE
OpenSplice DDS




                 ¨


                 ¨   OWNERSHIP = SHARED
                 ¨   DESTINATION_ORDER = SOURCE_TIMESTAMP
Accessing Events in DDS
                 ¨   The DataReader.take operation should be used to




                                                                                                 Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      access topics representing events
                      ¨   This ensures that the DDS cache is always freed by available events

                 ¨   The DataReader data should be accessed with the
OpenSplice DDS




                      following flags:
                      ¨   NEW_SAMPLE_STATE
                      ¨   ALIVE_INSTANCE_STATE
                      ¨   ANY_VIEW_STATE
Example            [1/3]




                                                                            Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨   A CollisionEvent could be raised by a Robot when it
                      is colliding (or about to collide) with something
OpenSplice DDS




                 ¨   Topic Type:      struct CollisionEvent {
                                          long detectingRobotId;
                                          long collidingRobotId;
                                          long xe;
                                          long ye;
                                       };
Example               [2/3]



                      The Topic and DataReader would be constructed as




                                                                                              Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨

                      follows
                            // Create Topic Qos
                            val tQos =
                                TopicQos() <= KeepAll()
                                           <= Reliable()
                                           <= VolatileDurability()
OpenSplice DDS




                                           <= SharedOwnership()
                                           <= SourceTimestamp();
                            // Create Topic
                            val cet = Topic[CollisionEvent](“CollisionEvent”,topicQos)

                            // Create DataReader
                            val cedr = DataReader[CollisionEvent](cet, DataReaderQos(tqos))
OpenSplice DDS




                                                                      ¨

                                        // Take data
                                                                                                Example
                                                                                               [3/3]




                                        val data = cedr.take()
                                                                 Data can be read as follows




         Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
Commands in DDS
OpenSplice DDS
Commands in DDS
                 ¨   As explained earlier commands are just a kind of




                                                                                Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      stimulus
                 ¨   As such could be represented as pairs of events one for
                      the “command request” and the other for the
                      “command reply”
OpenSplice DDS




                 ¨   However many people like to deal with commands
                      synchronously, this is why OpenSplice provides now an
                      RMI Framework!
OpenSplice RMI
                 ¨   Enhances OpenSplice with the ability of defining distributed




                                                                                     Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      Services implementing a well defined service interface
                 ¨   Interfaces are specified in IDL and are fully interoperable
                      with DDS types
OpenSplice DDS




                 ¨   Uses DDS mechanism to invoke services
                 ¨   Takes advantage of DDS mechanism for discovery, fault
                      tolerance, one-to-many invocations, etc.
Example                  [1/2]
                                                            struct Region {
                                                                long x0;
                 ¨   Suppose our System is composed            long y0;




                                                                                                                    Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                long width;
                      by a set of cooperating Robots        };
                                                                long height;

                      that are inspecting some              local interface RobotCommands : ::DDS_RMI::Services {
                      assigned region for surveillance,          void start();
                      or detecting chemicals,                    void stop();

                      radioactivity, etc.                        void setSpeed(in long s);
                                                                 long getSpeed();
OpenSplice DDS




                                                                 void setSize(in long s);
                 ¨   DDS RMI gives us a way of                  long getSize();
                      defining the set of interfaces that        void setRegion(in Region r);
                      constitute the relevant                    Region getRegion();

                      commands and invoke them as                string getColor();

                      traditional RMI                       };
                                                                 string getShape();
Example                [2/2]
                                                        struct Region {
                                                            long x0;
                                                            long y0;




                                                                                                                Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                            long width;
                                                            long height;
                                                        };
                 ¨   Under the hood, appropriate       local interface RobotCommands : ::DDS_RMI::Services {
                      topics are generated by the            void start();
                      infrastructure                         void stop();

                                                             void setSpeed(in long s);
                                                             long getSpeed();
                      QoS can be associated to
OpenSplice DDS




                 ¨
                                                             void setSize(in long s);
                      individual methods via an XML          long getSize();
                      file so to further control the         void setRegion(in Region r);
                      semantics of methods invocation        Region getRegion();

                                                             string getColor();

                                                             string getShape();
                                                        };
OpenSplice DDS

                                                                                  Using DDS RMI




         Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
OpenSplice DDS




           Demo
Autonomous Robots                                         [1/2]


                 ¨   Let’s build a system in which




                                                                                              Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      ¨   robots move autonomously on an assigned region
                      ¨   look actively for some specified target and raise event when the
                           target is at reach

                      Along with autonomous robots the system will have:
OpenSplice DDS




                 ¨

                      ¨   A GUI showing the position of the robots and highlighting the
                           places where something was detected
                      ¨   A control application for issuing commands to robots
State, Event, Commands




                                            Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨   State
                      ¨   Robot Position

                 ¨   Events
                      ¨   TargetDetected
OpenSplice DDS




                 ¨   Commands
                      ¨   Robot Control
Demo in Action
OpenSplice DDS
Summing Up
                 ¨   All Distributed Systems can be decomposed into State and




                                                                                    Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      Stimulus, where typical stimulus are Events and Commands
                 ¨   DDS provides first class support for both Distributed State
                      and Event

                      With DDS RMI now OpenSplice also provide first class
OpenSplice DDS




                 ¨

                      support for Commands!
                 ¨   DDS RMI is built on DDS taking advantage both in terms of
                      performance, fault-tolerance and flexibility.
References




                                                                       Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ¨   Article comparing performance of Remote Method
                      Invocation using ZeroC ICE and DDS
                      ¨   http://bit.ly/nCs66E
OpenSplice DDS




                 ¨   DDS RMI Draft RFP
                      ¨   http://bit.ly/owCRgK
:: 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

Weitere ähnliche Inhalte

Andere mochten auch

Ingalaterra Eta Portugal
Ingalaterra Eta PortugalIngalaterra Eta Portugal
Ingalaterra Eta Portugalguestd4e08
 
The Ugly Duckling
The Ugly DucklingThe Ugly Duckling
The Ugly DucklingRuthEA
 
Kamloops Gr 2.3.Reading.Oct 2014
Kamloops Gr 2.3.Reading.Oct 2014Kamloops Gr 2.3.Reading.Oct 2014
Kamloops Gr 2.3.Reading.Oct 2014Faye Brownlie
 
比較の表し方(1)
比較の表し方(1)比較の表し方(1)
比較の表し方(1)shingokeihoku
 
Model sentences with preposition
Model sentences with prepositionModel sentences with preposition
Model sentences with prepositionMurely Ponnusamy
 
Black friday haine
Black friday haineBlack friday haine
Black friday haineDa Vinci
 
Crowdology Consumer Panelv2
Crowdology Consumer Panelv2Crowdology Consumer Panelv2
Crowdology Consumer Panelv2Lisa_Bella
 
Crosscurrents, 2011, Collaboration Counts!
Crosscurrents, 2011, Collaboration Counts!Crosscurrents, 2011, Collaboration Counts!
Crosscurrents, 2011, Collaboration Counts!Faye Brownlie
 
The Open Splice.Org Community
The Open Splice.Org CommunityThe Open Splice.Org Community
The Open Splice.Org CommunityAngelo Corsaro
 
Ifmasv Roundtable Sj City College09 May12
Ifmasv Roundtable   Sj City College09 May12Ifmasv Roundtable   Sj City College09 May12
Ifmasv Roundtable Sj City College09 May12AndyFuhrman
 
Effective use of communication tools
Effective use of communication toolsEffective use of communication tools
Effective use of communication toolsRajendra Sabnis
 

Andere mochten auch (18)

Sph 107 Ch 15
Sph 107 Ch 15Sph 107 Ch 15
Sph 107 Ch 15
 
presentacion
presentacionpresentacion
presentacion
 
Ingalaterra Eta Portugal
Ingalaterra Eta PortugalIngalaterra Eta Portugal
Ingalaterra Eta Portugal
 
Vagrant
VagrantVagrant
Vagrant
 
The Ugly Duckling
The Ugly DucklingThe Ugly Duckling
The Ugly Duckling
 
5 A 2008
5 A  20085 A  2008
5 A 2008
 
Kamloops Gr 2.3.Reading.Oct 2014
Kamloops Gr 2.3.Reading.Oct 2014Kamloops Gr 2.3.Reading.Oct 2014
Kamloops Gr 2.3.Reading.Oct 2014
 
ikp213-02-pendahuluan
ikp213-02-pendahuluanikp213-02-pendahuluan
ikp213-02-pendahuluan
 
Sph 106 Ch 10
Sph 106 Ch 10Sph 106 Ch 10
Sph 106 Ch 10
 
Facebook
FacebookFacebook
Facebook
 
比較の表し方(1)
比較の表し方(1)比較の表し方(1)
比較の表し方(1)
 
Model sentences with preposition
Model sentences with prepositionModel sentences with preposition
Model sentences with preposition
 
Black friday haine
Black friday haineBlack friday haine
Black friday haine
 
Crowdology Consumer Panelv2
Crowdology Consumer Panelv2Crowdology Consumer Panelv2
Crowdology Consumer Panelv2
 
Crosscurrents, 2011, Collaboration Counts!
Crosscurrents, 2011, Collaboration Counts!Crosscurrents, 2011, Collaboration Counts!
Crosscurrents, 2011, Collaboration Counts!
 
The Open Splice.Org Community
The Open Splice.Org CommunityThe Open Splice.Org Community
The Open Splice.Org Community
 
Ifmasv Roundtable Sj City College09 May12
Ifmasv Roundtable   Sj City College09 May12Ifmasv Roundtable   Sj City College09 May12
Ifmasv Roundtable Sj City College09 May12
 
Effective use of communication tools
Effective use of communication toolsEffective use of communication tools
Effective use of communication tools
 

Ähnlich wie Distributed Events, State and Commands

Getting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaGetting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaAngelo Corsaro
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution ServiceAngelo Corsaro
 
Joe armstrong erlanga_languageforprogrammingreliablesystems
Joe armstrong erlanga_languageforprogrammingreliablesystemsJoe armstrong erlanga_languageforprogrammingreliablesystems
Joe armstrong erlanga_languageforprogrammingreliablesystemsSentifi
 
Os rtos.ppt
Os rtos.pptOs rtos.ppt
Os rtos.pptrahul km
 
High Performance Distributed Computing with DDS and Scala
High Performance Distributed Computing with DDS and ScalaHigh Performance Distributed Computing with DDS and Scala
High Performance Distributed Computing with DDS and ScalaAngelo Corsaro
 
DDS in SCADA, Utilities, Smart Grid and Smart Cities
DDS in SCADA, Utilities, Smart Grid and Smart CitiesDDS in SCADA, Utilities, Smart Grid and Smart Cities
DDS in SCADA, Utilities, Smart Grid and Smart CitiesAngelo Corsaro
 
Distributed Systems
Distributed SystemsDistributed Systems
Distributed Systemsvampugani
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsAngelo Corsaro
 
The Cloud Cube
The Cloud CubeThe Cloud Cube
The Cloud CubeAdrius42
 

Ähnlich wie Distributed Events, State and Commands (14)

Dog Sim
Dog SimDog Sim
Dog Sim
 
Getting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaGetting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and Scala
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
 
Joe armstrong erlanga_languageforprogrammingreliablesystems
Joe armstrong erlanga_languageforprogrammingreliablesystemsJoe armstrong erlanga_languageforprogrammingreliablesystems
Joe armstrong erlanga_languageforprogrammingreliablesystems
 
Os rtos.ppt
Os rtos.pptOs rtos.ppt
Os rtos.ppt
 
High Performance Distributed Computing with DDS and Scala
High Performance Distributed Computing with DDS and ScalaHigh Performance Distributed Computing with DDS and Scala
High Performance Distributed Computing with DDS and Scala
 
DDS in SCADA, Utilities, Smart Grid and Smart Cities
DDS in SCADA, Utilities, Smart Grid and Smart CitiesDDS in SCADA, Utilities, Smart Grid and Smart Cities
DDS in SCADA, Utilities, Smart Grid and Smart Cities
 
Advanced orm
Advanced ormAdvanced orm
Advanced orm
 
RTOS - Real Time Operating Systems
RTOS - Real Time Operating SystemsRTOS - Real Time Operating Systems
RTOS - Real Time Operating Systems
 
Distributed Systems
Distributed SystemsDistributed Systems
Distributed Systems
 
Adarsh grid
Adarsh gridAdarsh grid
Adarsh grid
 
Adarsh grid
Adarsh gridAdarsh grid
Adarsh grid
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS Applications
 
The Cloud Cube
The Cloud CubeThe Cloud Cube
The Cloud Cube
 

Mehr von 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
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution ServiceAngelo 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
 

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

Kürzlich hochgeladen

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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 

Kürzlich hochgeladen (20)

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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 

Distributed Events, State and Commands

  • 1. Distributed State, Events and Commands :: with OpenSplice DDS OpenSplice DDS Angelo CORSARO, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com
  • 2. OpenSplice DDS Foundations
  • 3. Defining a System Cyber/Physical. Copyright  2010,  PrismTech  –    All  Rights  Reserved. World. ¨ A set of interacting System. or interdependent Input& !  State& Output& parts forming an !  Transi"ons& OpenSplice DDS integrated whole s"mulus& (events/commands)&&
  • 4. Defining a Distributed System Cyber/Physical. Copyright  2010,  PrismTech  –    All  Rights  Reserved. World. ¨ A Distributed System Distributed. is a System whose Input& System. Output& !  State& parts can only !  Transi"ons& interact by OpenSplice DDS communicating over s"mulus& a network (events/commands)&&
  • 5. State in a Distributed System ¨ The State of a distributed system is the collection of the states of its Cyber/Physical. Copyright  2010,  PrismTech  –    All  Rights  Reserved. parts plus the stimulus currently World. propagating through the system Distributed. ¨ As Distributed Systems don’t System. Input& Output& share memory, one problem to !  State& OpenSplice DDS !  Transi"ons& address is how to access arbitrary subsets of its state (or of its parts) s"mulus& ¨ The other problem is the (events/commands)&& consistency of this state...
  • 6. Stimulus in a Distributed System Cyber/Physical. Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ Internal and Environmental World. Stimuli in a distributed system are used to Distributed. System. ¨ evolve the system state Input& Output& !  State& OpenSplice DDS (commands, i.e. do something) !  Transi"ons& ¨ notify particular condition on the state (events, i.e. something happened) s"mulus& (events/commands)&&
  • 7. State vs Stimulus Temp State% Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ The state of a system is always defined to have a value time OpenSplice DDS OverheatAlarm S&mulus% ¨ A Stimulus only exists at a particular point in time time
  • 8. Are Commands Different? Cyber/Phisycal System ¨ Commands are a kind of stimulus World Do Something that express the need for the Copyright  2010,  PrismTech  –    All  Rights  Reserved. system to do something Done ¨ As commands have the “do something” connotation, it is often Asynchronous* useful to synchronously be OpenSplice DDS informed that the “command” has Cyber/Phisycal World System been executed DoSomething ¨ However systems can be built with both synchronous as well as Done asynchronous commands Synchronous*
  • 9. State Events and OpenSplice DDS Commands in DDS
  • 10. OpenSplice DDS State in DDS
  • 11. Distributed State with DDS Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ The “public” state of the elements making the distributed system can easily be captured via topic definitions Representing state with topics is more a matter of OpenSplice DDS ¨ discipline w.r.t. to the QoS being used and the way in which it is accessed
  • 12. State’s DDS QoS Topics representing state should have the following QoS Settings Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ RELIABILITY = RELIABLE ¨ HISTORY = KEEP_LAST(1) DURABILITY = (TRANSIENT |PERSISTENT) OpenSplice DDS ¨ ¨ OWNERSHIP = EXCLUSIVE ¨ DESTINATION_ORDER = SOURCE_TIMESTAMP
  • 13. Soft-State’s DDS QoS Topics representing soft-state, meaning state that is periodically Copyright  2010,  PrismTech  –    All  Rights  Reserved. updated, should have the following QoS Settings ¨ RELIABILITY = BEST_EFFORT ¨ HISTORY = KEEP_LAST(1) OpenSplice DDS ¨ DURABILITY = VOLATILE ¨ OWNERSHIP = EXCLUSIVE ¨ DESTINATION_ORDER = SOURCE_TIMESTAMP
  • 14. Accessing State in DDS ¨ The DataReader.read operation should be used to Copyright  2010,  PrismTech  –    All  Rights  Reserved. access topics representing state ¨ This ensures that the last value for the state will be kept in DDS and will be readable again and again ¨ The DataReader data should be accessed with the OpenSplice DDS following flags: ¨ ANY_SAMPLE_STATE ¨ ALIVE_INSTANCE_STATE ¨ ANY_VIEW_STATE
  • 15. Example [1/3] Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ A Robot Position in 2D is an example of state ¨ Let’s assume that the Robot only update position when it moves OpenSplice DDS ¨ Topic Type: struct RobotPosition { @key long rid; long x; long y; };
  • 16. Example [2/3] The Topic and DataReader would be constructed as Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ follows // Create Topic Qos val tQos = TopicQos() <= KeepLastHistory(1) <= Reliable() <= TransientDurability() OpenSplice DDS <= ExclusiveOwnership() <= SourceTimestamp(); // Create Topic val rpt = Topic[RobotPosition](“RobotPosition”,topicQos) // Create DataReader val rpdr = DataReader[RobotPosition](rpt, DataReaderQos(tqos))
  • 17. Example [3/3] Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ Data can be read as follows // Read data val data = rpdr.read(ReadState.AllData) // Or specific to Escalier val data = rpdr.history OpenSplice DDS
  • 18. OpenSplice DDS Events in DDS
  • 19. Distributed Events with DDS Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ Events raised by a distributed system can be easily captured via topic definitions ¨ Representing events with topics is more a matter of discipline w.r.t. to the QoS being used and the way OpenSplice DDS in which it is accessed ¨ Event topics are often keyless
  • 20. Events’ DDS QoS Events should have the following QoS Settings Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ RELIABILITY = RELIABLE ¨ HISTORY = KEEP_ALL DURABILITY = VOLATILE OpenSplice DDS ¨ ¨ OWNERSHIP = SHARED ¨ DESTINATION_ORDER = SOURCE_TIMESTAMP
  • 21. Events’ DDS QoS Events should have the following QoS Settings Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ RELIABILITY = RELIABLE ¨ HISTORY = KEEP_ALL DURABILITY = VOLATILE OpenSplice DDS ¨ ¨ OWNERSHIP = SHARED ¨ DESTINATION_ORDER = SOURCE_TIMESTAMP
  • 22. Accessing Events in DDS ¨ The DataReader.take operation should be used to Copyright  2010,  PrismTech  –    All  Rights  Reserved. access topics representing events ¨ This ensures that the DDS cache is always freed by available events ¨ The DataReader data should be accessed with the OpenSplice DDS following flags: ¨ NEW_SAMPLE_STATE ¨ ALIVE_INSTANCE_STATE ¨ ANY_VIEW_STATE
  • 23. Example [1/3] Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ A CollisionEvent could be raised by a Robot when it is colliding (or about to collide) with something OpenSplice DDS ¨ Topic Type: struct CollisionEvent { long detectingRobotId; long collidingRobotId; long xe; long ye; };
  • 24. Example [2/3] The Topic and DataReader would be constructed as Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ follows // Create Topic Qos val tQos = TopicQos() <= KeepAll() <= Reliable() <= VolatileDurability() OpenSplice DDS <= SharedOwnership() <= SourceTimestamp(); // Create Topic val cet = Topic[CollisionEvent](“CollisionEvent”,topicQos) // Create DataReader val cedr = DataReader[CollisionEvent](cet, DataReaderQos(tqos))
  • 25. OpenSplice DDS ¨ // Take data Example [3/3] val data = cedr.take() Data can be read as follows Copyright  2010,  PrismTech  –    All  Rights  Reserved.
  • 27. Commands in DDS ¨ As explained earlier commands are just a kind of Copyright  2010,  PrismTech  –    All  Rights  Reserved. stimulus ¨ As such could be represented as pairs of events one for the “command request” and the other for the “command reply” OpenSplice DDS ¨ However many people like to deal with commands synchronously, this is why OpenSplice provides now an RMI Framework!
  • 28. OpenSplice RMI ¨ Enhances OpenSplice with the ability of defining distributed Copyright  2010,  PrismTech  –    All  Rights  Reserved. Services implementing a well defined service interface ¨ Interfaces are specified in IDL and are fully interoperable with DDS types OpenSplice DDS ¨ Uses DDS mechanism to invoke services ¨ Takes advantage of DDS mechanism for discovery, fault tolerance, one-to-many invocations, etc.
  • 29. Example [1/2] struct Region { long x0; ¨ Suppose our System is composed long y0; Copyright  2010,  PrismTech  –    All  Rights  Reserved. long width; by a set of cooperating Robots }; long height; that are inspecting some local interface RobotCommands : ::DDS_RMI::Services { assigned region for surveillance, void start(); or detecting chemicals, void stop(); radioactivity, etc. void setSpeed(in long s); long getSpeed(); OpenSplice DDS void setSize(in long s); ¨ DDS RMI gives us a way of long getSize(); defining the set of interfaces that void setRegion(in Region r); constitute the relevant Region getRegion(); commands and invoke them as string getColor(); traditional RMI }; string getShape();
  • 30. Example [2/2] struct Region { long x0; long y0; Copyright  2010,  PrismTech  –    All  Rights  Reserved. long width; long height; }; ¨ Under the hood, appropriate local interface RobotCommands : ::DDS_RMI::Services { topics are generated by the void start(); infrastructure void stop(); void setSpeed(in long s); long getSpeed(); QoS can be associated to OpenSplice DDS ¨ void setSize(in long s); individual methods via an XML long getSize(); file so to further control the void setRegion(in Region r); semantics of methods invocation Region getRegion(); string getColor(); string getShape(); };
  • 31. OpenSplice DDS Using DDS RMI Copyright  2010,  PrismTech  –    All  Rights  Reserved.
  • 33. Autonomous Robots [1/2] ¨ Let’s build a system in which Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ robots move autonomously on an assigned region ¨ look actively for some specified target and raise event when the target is at reach Along with autonomous robots the system will have: OpenSplice DDS ¨ ¨ A GUI showing the position of the robots and highlighting the places where something was detected ¨ A control application for issuing commands to robots
  • 34. State, Event, Commands Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ State ¨ Robot Position ¨ Events ¨ TargetDetected OpenSplice DDS ¨ Commands ¨ Robot Control
  • 36. Summing Up ¨ All Distributed Systems can be decomposed into State and Copyright  2010,  PrismTech  –    All  Rights  Reserved. Stimulus, where typical stimulus are Events and Commands ¨ DDS provides first class support for both Distributed State and Event With DDS RMI now OpenSplice also provide first class OpenSplice DDS ¨ support for Commands! ¨ DDS RMI is built on DDS taking advantage both in terms of performance, fault-tolerance and flexibility.
  • 37. References Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ Article comparing performance of Remote Method Invocation using ZeroC ICE and DDS ¨ http://bit.ly/nCs66E OpenSplice DDS ¨ DDS RMI Draft RFP ¨ http://bit.ly/owCRgK
  • 38. :: 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