SlideShare a Scribd company logo
OpenSplice
                 DDS Everywhere
OpenSplice DDS




                              Angelo CORSARO, Ph.D.
                                      Chief Technology Officer
                                      OMG DDS Sig Co-Chair
                                                 PrismTech
                              angelo.corsaro@prismtech.com
DDS Everywhere Platform
                      A DDS-based, interoperable




                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐
                      product family addressing           OpenSplice       OpenSplice

                      systems needs from Embedded         Cloud           Community
                      and Mobile to Enterprise and
                      Cloud
                                                                  OpenSplice
OpenSplice DDS




                  ☐   An Open Source core providing
                      free access to the OpenSplice       OpenSplice        OpenSplice
                      Ecosystem, security of supply and   Enterprise       Embedded
                      a vibrant, innovative community
DDS Everywhere Platform
                     Consumer
                     Platforms
                 ☐   Browser / HTML5




                                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ☐   iOS
                                                OpenSplice       OpenSplice
                 ☐   Android
                 ☐   Cloud                      Cloud           Community
                 ☐   No-SQL
                 ☐   Mobile/WiFi IP
                     Transp.
                                                        OpenSplice
OpenSplice DDS




                                                                               ☐   RTOS (VxWorks, QNX,
                 ☐   OS (Linux, Windows, etc)                                      etc.)
                 ☐   Cloud                                                     ☐ FPGA
                                                OpenSplice        OpenSplice
                 ☐   DBMS                                                      ☐ BSP / No-OS
                 ☐   No-SQL                     Enterprise       Embedded      ☐ IP + Exotic
                 ☐   InfiniBand + IP                                              Transports
                     Transports
                                                                                     Industrial
                         IT
                                                                                     Platforms
                     Platforms
DDS Everywhere Platform
                  ☐ Mobility
                  ☐ Elasticity
                  ☐ Cloud




                                                                                           Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐ Integration


                                            OpenSplice       OpenSplice

                                            Cloud           Community



                                                    OpenSplice
OpenSplice DDS




                      ☐   Fault-Tolerance   OpenSplice        OpenSplice
                      ☐   Throughput        Enterprise       Embedded
                      ☐   Scalability
                      ☐   Latency
                                                                           ☐ Determinism
                                                                           ☐ Latency
                      ☐   Security
                                                                           ☐ Footprint
                      ☐   Integration
OpenSplice Enterprise
OpenSplice DDS
Key Highlights
                  ☐   The best middleware                            OpenSplice         OpenSplice




                                                                                                      Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                     Cloud             Community
                      infrastructure to Simplify
                      Distributed System
                      Development
                                                                               OpenSplice
                  ☐   Reduce complexity of
OpenSplice DDS




                      building, testing, integrating,   OpenSplice
                                                                     OpenSplice          OpenSplice
                      and deploying high-               Tools
                                                                     Enterprise         Embedded
                      performance, scalable, and
                      fault-tolerant distributed
                      systems                                          OpenSplice
                                                                       DDS
OpenSplice DDS




                 New in v6.3
OpenSplice DDSI2E
                  Enhanced version of the Interoperable wire




                                                                    Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  protocol DDSI v2.1

                  Discovery
                  ☐ Standardized discovery (locators)
                  ☐ Dynamic unicast/multicast selection
                  ☐ Optional static discovery
OpenSplice DDS




                  Real-Time
                  ☐ independently scheduled priority-lanes
                  ☐ Support for Logical and Physical Partitioning
                  ☐ Traffic-Shaping

                  Security
                  ☐   Encrypted network-Partitions
Record and Replay
                  ☐   Dynamic recording of any topic-




                                                                                                                          Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      data in a DDS system

                  ☐   Selective replay with variable                         RnR
                                                                            RnR                     RnR
                      speed                                                Service
                                                                         Service(s)               Manager
                  ☐   Distributed control by topic-based                        Record/Replay command   Record/Replay command
                                                             Any topic
                      API (‘command’ & ‘status’ topics)
OpenSplice DDS




                                                                                & status topics         & status topics

                                                                                OpenSplice DDS
                  ☐   Seamless integration with
                      OpenSplice Tester (topic-based API)

                  ☐   Dedicated RnR-Manager graphical
                      GUI for scenario-definition and data
                      import/analysis
OpenSplice DDS


                                                                                          Record and Replay Tool




                 Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
New DDS APIs




                                                                                    Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   The original DDS API introduces some unnecessary accidental
                      complexity
OpenSplice DDS




                  ☐   We’ve been working hard to standardize new C++/Java API for
                      DDS that makes using it as simple as possible
Statistics
                                                       Simple DataWriter with default QoS

                                                       DDS v1.2 C++ API          ISO C++ API




                                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                  15
                  ☐   The new API reduces the
                      number of lines of code     11
                      from 3x to 5x when
                      compared to the original
OpenSplice DDS




                                                   8
                      DDS API!

                  ☐   Less code means less bugs    4


                                                   0
                                                                          SLOC
struct ShapeType {




                 ISO C++ DDS API
                                                                           string color;
                                                                           long x;
                                                                           long y;
                                                                           long shapesize;
                                                                        };
                                                                        #pragma keylist ShapeType color




                                            int main(int argc, char* argv[]) {
                                                try {




                                                                                                          Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   Simple, Compact and   ! !
                                                   // Create DomainParticipant
                                                    DomainParticipant dp = DomainParticipant(0);

                      Elegant               ! !
                                                   // Create Topic
                                                    Topic<ShapeType> topic(dp, "Circle");
                                                   // Create Publisher
                                            ! !     Publisher pub(dp);
                  ☐   Type-safe                    // Create DataWriter QoS
                                                   DataWriterQos dwqos =
                                                      pub.default_datawriter_qos()
                                                      << Durability::Transient()
                  ☐   Orthogonal                      << History::KeepLast(10);
OpenSplice DDS




                                                  // Create DataWriter
                                            ! !    DataWriter<ShapeType> dw(pub, topic, dwqos);
                  ☐   Efficient                   // Write
                                                  ShapeType s = {"RED", 50, 70, 90};
                                                  dw << s;
                                                  // - or -
                  ☐   QoS DSL                     dw.write(s);      ! !
                                            ! } catch (const dds::core::Exception& e) {
                                            ! !    std::cout << e.what() << std::endl;
                                            ! }
                                            ! return 0;
                                            }
ISO C++ DDS API




                                                                                                Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   Unified and composable data selection API


                          std::vector<std::string> p;
                          p.push_back("100");
                          p.push_back("200");
OpenSplice DDS




                          Query q("x < %0 AND y < %1", p);

                          auto data = reader
                              ! .select()
                                   .instance(handle) // -- Select Instance
                              ! ! .state(status::DataState::new_data()) // -- Filter on State
                              ! ! .content(q) // -- Filter on Content
                                 .read(); // -- Execute the selection and read the data
Example: DataWriter
                 int main(int argc, char* argv[]) {
                 try {
                 ! !    DomainParticipant dp(0);




                                                                    Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 ! !    Topic<ShapeType> topic(dp, "Circle");
                 ! !    Publisher pub(dp);
                 ! !    DataWriter<ShapeType> dw(pub, topic);

                 !   !   uint32_t pos = 0;
                 !   !   const uint32_t N = 300;
                 !   !   for (int i = 0; i < N; ++i) {
                 !   !   ! ShapeType bc = {"RED", i, i, 60};
OpenSplice DDS




                 !   !   ! ShapeType rc = {"BLUE", N-i, N-i, 60};
                 !   !   ! dw << rc;
                 !   !   ! usleep(10000);
                 !   !   }

                 !   } catch (const dds::core::Exception& e) {
                 !   !    std::cout << e.what() << std::endl;
                 !   }
                 !   return 0;
                 }
Example: DataReader
                 int main(int argc, char* argv[]) {
                    try {
                       DomainParticipant dp(0);




                                                                     Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                       Topic<ShapeType> topic(dp, "Circle");
                       Subscriber sub(dp);
                       DataReader<ShapeType> dr(sub, topic);

                       uint32_t pos = 0;
                       const uint32_t N = 300;
                       uint32_t max_size = 10;
                       const uint32_t sleepTime = 500000;
OpenSplice DDS




                       while (true) {
                          LoanedSamples<ShapeType> samples =
                             dr.read();
                          std::cout << "-----------" << std::endl;
                          for_each(samples.begin(), samples.end(),
                                   printShapeSample);

                           usleep(sleepTime);
                        }
                     } catch (const dds::core::Exception& e) {
                        std::cout << e.what() << std::endl;
                     }
                     return 0;
                 }
Full C++ Shapes Application
                 see:




                                                                                    Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 github.com/kydos/dds-psm-cxx/tree/master/examples/ishapes-driver
OpenSplice DDS
OpenSplice Cloud
OpenSplice DDS
Key Highlights
                                                            OpenSplice
                                                            Gateway




                                                                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   Brings DDS on mobile
                      devices powered by       OpenSplice
                                                            OpenSplice                OpenSplice

                      Android/iOS              Mobile       Cloud                Community

                  ☐   Enables DDS-based
                                                                         OpenSplice
OpenSplice DDS




                      Cloud Messaging for
                      higher scalability,
                      throughout and minimal                OpenSplice                OpenSplice
                      cost per message                      Enterprise           Embedded
OpenSplice Mobile




                                                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   Pure Java version of
                      OpenSplice targeting the JVM    DCPS Java 5 / Scala API

                  ☐   DDSI Protocol Stack optimized             DDSI
                      for mobility and Android OS       (Optimized for Mobility)
OpenSplice DDS




                  ☐   Only DDS on the market
                      designed and Engineered for
                      Android and the JVM
OpenSplice DDS


                                                                                          OpenSplice Mobile




                 Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
OpenSplice DDS


                                                                                          Demo




                 Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
Java 5 PSM




                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   Idiomatic and ergonomic DDS API for Java

                  ☐   Guaranteed code portability through clean separation of standard
                      API (in an OMG provided JAR) and vendor implementation
OpenSplice DDS




                  ☐   QoS and Selector DSL simplify programming and make code more
                      readable

                  ☐   QoS Provider allows to “externalize” the QoS configuration
Java Shapes -- Reader
                  package	
  org.omg.demo.dds.shapes;

                  import	
  ...;




                                                                                                                                                            Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  /**
                  	
  *	
  This	
  class	
  provides	
  a	
  simple	
  example	
  of	
  a	
  DDS	
  data	
  reader	
  using	
  the	
  new	
  Java	
  API.
                  	
  */
                  public	
  class	
  ShapesReader	
  {
                  	
  	
  	
  	
  public	
  static	
  void	
  main(String	
  args[])	
  throws	
  Exception	
  {

                  	
  	
  	
  	
  	
  	
  	
  	
  if	
  (args.length	
  <	
  1)	
  {
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("USAGE:ntShapesWriter	
  <topic>");
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("nttopic	
  =	
  [Circle,	
  Square,	
  Triangle]");
OpenSplice DDS




                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.exit(1);
                  	
  	
  	
  	
  	
  	
  	
  	
  }

                  	
  	
  	
  	
  	
  	
  	
  	
  final	
  String	
  shape	
  =
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  args[1].substring(0,1).toUpperCase()	
  +	
  
                  args[1].substring(1,args[1].length()).toLowerCase();

                  	
  	
  	
  	
  	
  	
  	
  	
  final	
  ServiceEnvironment	
  env	
  =
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ServiceEnvironment.createInstance(ShapesWriter.class.getClassLoader());
Java Shapes -- Reader
                  	
  	
  	
  	
  	
  	
  	
  	
  DomainParticipantFactory	
  factory	
  =
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  DomainParticipantFactory.getInstance(env);
                  	
  	
  	
  	
  	
  	
  	
  	
  DomainParticipant	
  dp	
  =	
  factory.createParticipant();




                                                                                                                                                                                      Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  	
  	
  	
  	
  	
  	
  	
  	
  final	
  PolicyFactory	
  pf	
  =	
  env.getSPI().getPolicyFactory();
                  	
  	
  	
  	
  	
  	
  	
  	
  TopicQos	
  tqos	
  =	
  dp.getDefaultTopicQos();

                  	
  	
  	
  	
  	
  	
  	
  	
  tqos.withPolicies(pf.Durability().withTransient(),	
  	
  
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  pf.Reliability().withReliable());
                  	
  	
  	
  	
  	
  	
  	
  	
  Topic<ShapeType>	
  topic	
  =	
  dp.createTopic(shape,	
  ShapeType.class);

                  	
  	
  	
  	
  	
  	
  	
  	
  Subscriber	
  sub	
  =	
  dp.createSubscriber();
OpenSplice DDS




                  	
  	
  	
  	
  	
  	
  	
  	
  DataReaderQos	
  drqos	
  =
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  sub.getDefaultDataReaderQos().withPolicies(
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  pf.Reliability().withBestEffort(),
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  pf.Durability().withTransient()
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  );

                  	
  	
  	
  	
  	
  	
  	
  	
  DataReader<ShapeType>	
  dr	
  =
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  sub.createDataReader(topic,	
  drqos,	
  new	
  ShapeTypeListener(),	
  Status.allStatuses(env));

                  	
  	
  	
  	
  	
  	
  	
  	
  Thread.currentThread().join();
                  	
  	
  	
  	
  }
                  }
Java Shapes -- Writer
                  public	
  class	
  ShapesWriter	
  {
                  	
  	
  	
  	
  public	
  static	
  void	
  main(String	
  args[])	
  throws	
  Exception	
  {

                  	
  	
  	
  	
  	
  	
  	
  	
  if	
  (args.length	
  <	
  4)	
  {




                                                                                                                                                                                      Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("USAGE:ntShapesWriter	
  <topic>	
  <circle>	
  <samples>	
  <period	
  ms>");
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("nttopic	
  =	
  [Circle,	
  Square,	
  Triangle]");
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("tcolor	
  =	
  [Red,	
  Blue,	
  Green,	
  Magenta,	
  Cyan]");
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  System.exit(1);
                  	
  	
  	
  	
  	
  	
  	
  	
  }

                  	
  	
  	
  	
  	
  	
  	
  	
  final	
  String	
  shape	
  =
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  args[1].substring(0,1).toUpperCase()	
  +	
  args[1].substring(1,args[1].length()).toLowerCase();
                  	
  	
  	
  	
  	
  	
  	
  	
  final	
  String	
  color	
  =	
  args[1].toUpperCase();
OpenSplice DDS




                  	
  	
  	
  	
  	
  	
  	
  	
  final	
  int	
  samples	
  =	
  Integer.parseInt(args[2]);

                  	
  	
  	
  	
  	
  	
  	
  	
  final	
  int	
  period	
  =	
  Integer.parseInt(args[3]);

                  	
  	
  	
  	
  	
  	
  	
  	
  final	
  int	
  bound	
  =	
  100;

                  	
  	
  	
  	
  	
  	
  	
  	
  final	
  ServiceEnvironment	
  env	
  =
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ServiceEnvironment.createInstance(ShapesWriter.class.getClassLoader());
Java Shapes -- Writer
                  	
  	
  	
  	
  	
  	
  	
  	
  final	
  PolicyFactory	
  pf	
  =	
  env.getSPI().getPolicyFactory();
                  	
  	
  	
  	
  	
  	
  	
  	
  DomainParticipantFactory	
  factory	
  =
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  DomainParticipantFactory.getInstance(env);

                  	
  	
  	
  	
  	
  	
  	
  	
  DomainParticipant	
  dp	
  =	
  factory.createParticipant();




                                                                                                                                                       Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  	
  	
  	
  	
  	
  	
  	
  	
  Topic<ShapeType>	
  topic	
  =	
  dp.createTopic(shape,	
  ShapeType.class);

                  	
  	
  	
  	
  	
  	
  	
  	
  Publisher	
  pub	
  =dp.createPublisher();
                  	
  	
  	
  	
  	
  	
  	
  	
  DataWriterQos	
  dwqos	
  =
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  pub.getDefaultDataWriterQos().withPolicies(
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  pf.Reliability().withBestEffort(),
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  pf.Durability().withTransient());

                  	
  	
  	
  	
  	
  	
  	
  	
  DataWriter<ShapeType>	
  dw	
  =	
  pub.createDataWriter(topic);
OpenSplice DDS




                  	
  	
  	
  	
  	
  	
  	
  	
  final	
  ShapeType	
  sample	
  =	
  new	
  ShapeType(color,	
  0,	
  0,	
  0);
                  	
  	
  	
  	
  	
  	
  	
  	
  for	
  (int	
  i	
  =	
  0;	
  i	
  <	
  samples;	
  ++i)	
  {
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  sample
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .setX(((int)Math.random()%bound))
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .setY(((int)Math.random()%bound))
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .setShapesize(((int)Math.random()%bound));
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  dw.write(sample);
                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Thread.sleep(period);
                  	
  	
  	
  	
  	
  	
  	
  	
  }
                  	
  	
  	
  	
  }
                  }
Performance




                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   OpenSplice Mobile v1.0
                      beta features already
                      very good performance

                  ☐   Latency is low and pretty
OpenSplice DDS




                      stable ~3usec of
                      difference from 32 to 1024
                      bytes
OpenSplice Gateway
                                                                           JMS
                      Integration technology providing




                                                                                                Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐




                                                                                     XM
                      connectivity from DDS to over 80




                                                                   ST




                                                                                        PP
                                                                  RE
                                                                           OpenSplice
                      technologies, including WebSockets                Gateway




                                                                                          P
                      and REST




                                                                 Cu




                                                                                        AMQ
                                                                  sto
                                                                   m
                  ☐   Java-based and easily deployable
OpenSplice DDS




                                                                         DDSI-RTPS

                      on the cloud
                                                           Supported Connectors Include:
                  ☐   Key building block for OpenSplice    - JMS                  - HTTP
                                                           - REST                 - AMQP
                      Based Cloud Messaging Solutions      - CometD               - XMPP
                                                           - CFX                  - Hibernate
                                                           -WebSockets            -HBase
                                                           - TCP, UDP Sockets     - Custom
WebSocket Integration
                  1   // Define endpoints
                  2      val inEndpoint =




                                                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  3        "ddsi:"+ inTopic +":"+ inDomain +"/" + shapeType
                  4      val outEndpoint =
                  5        "websocket://"+inTopic.toLowerCase + "?sendToAll=true"
                  6
                  7      // Define a Route using the Scala DSL
                  8      val shapesRoute = new RouteBuilder {
                  9        override def configure() =
OpenSplice DDS




                 10          from(inEndpoint) unmarshal("cdr") marshal() json() to(outEndpoint)                To JSON
                 11      }




                                                                                                     Topic
                                                                                                    “Circle”


                 ☐    This example requires Camel 2.10                                              DDS
                                                                                                  Domain 0
TCP/UDP Tunneling                                        DDS
                                                                        Domain 0

                 ☐   Integrate different DDS Domains via TCP (or UDP)      Topic
                                                                          “Circle”
                     tunnel
                     ☐   Per Topic bridging
                     ☐   Unidirectional or bidirectional                   GW 1
                     ☐   Possibly adding SSL/TLS                               TCP
OpenSplice DDS




                                                                           GW 2
                     1 // on GW1:
                     2 from("ddsi:Circle:0/ShapeType")
                     3 to("netty:tcp://localhost:6789?sync=false");
                                                                           Topic
                                                                          “Circle”
                     1 // on GW2:
                     2 from("netty:tcp://localhost:6789?sync=false")
                     3 to("ddsi:Circle:0/ShapeType");                     DDS
                                                                        Domain 0
OpenSplice Embedded
OpenSplice DDS
Key Highlights
                                                    OpenSplice          OpenSplice




                                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                    Cloud           Community

                  ☐   The OpenSplice Embedded
                      Product family brings DDS             OpenSplice
                      connectivity to devices and                                           OpenSplice
OpenSplice DDS




                      resource constrained real-    OpenSplice          OpenSplice
                                                                                            Integrator

                      time embedded systems         Enterprise        Embedded
                                                                                     OpenSplice
                                                                                     Lite

                                                                  OpenSplice
                                                                  RTE
FPGA Integrator
                                                                 GIOP/DDSI                                    DDS




                                                                                                                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                                                                                  Data

                                                                   Bridge                                                        Reader


                             FPGA
                                                                                                Data
                                                                                                Writer



                                                  GIOP
                                                                                                                                           Data
                                                                                                                                          Reader
                                                                                       Data                         TopicD

                                      ICO                      GIOP       DDSI
                                                                                       Writer
                                                                                                         TopicA
                                                                                                                                           Data
                                                                                                                   TopicB                 Reader
                                                                                       Data
                                                                                       Writer
                                                                                                         TopicC
                                                                                                                       ...

                                                                                         Data                                         Data
                                                                                         Writer                                      Reader
OpenSplice DDS




                                                                                                         DDS Global Data Space


                  ☐   ‘Out-of-the-box’ solution for integrating FPGA’s withDDS based systems
                  ☐   Bridges the device-data (via GIOP) to the DDS-based system using a software
                      ‘gateway’ providing full DDS QoS support to maintain & distribute the device-data
                  ☐   Bridge-technology is be based either:
                      ☐   OpenSplice Gateway (if a Java platform is available) or
                      ☐   A small OpenSplice bridge application or pluggable-service
OpenSplice Lite
                                                                  ISO C++ API
                  ☐   Bring software-based DDS




                                                                                                 Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      implementation to a range of resource
                      constrained devices                                 Native C API
                  ☐   Allow for variability on functionalities,
                      transport and support of underlying OS/            DDSI / DDSI-E
                      BSP
                                                                       OS           Transport
OpenSplice DDS




                  ☐   Provides very low footprint and very high    Abstraction     Abstraction
                      performance
                  ☐   Footprint as low as 100/200 KB                 RTOS           DSP
                      Latency as low as 35-45 usec (on Gigabit                   uController
                  ☐                                                   GPP
                      network)
OpenSplice RTE
                  ☐   Bring the full power of DDS to real-




                                                                                        Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      time embedded systems                  DCPS API (C/C++/RT-Java)

                  ☐   Provides low footprint, superlative        DDSI-E / RT-NET
                      scalability and and high
                      performance                                        OS
OpenSplice DDS




                                                                     Abstraction
                  ☐   Footprint 2MB
                                                                       RTOS
                  ☐   Latency 75/80 usec (on Gigabit
                      network)                                         GPP
Putting it all Together
OpenSplice DDS
DDS Everywhere!
                                                                          OpenSplice

                                                                          Mobile
                               OpenSplice

                               Mobile                                   Embedded JVM



                                                                                          OpenSplice

                                                                  DDS                     Enterprise
OpenSplice DDS




                                            OpenSplice                                    Enterprise OS
                 MQTT, AMQP,                Gateway
                 JMS, REST,
                 ....                                                       OpenSplice
                                                          OpenSplice
                                                                            RTE
                                                          Lite
                                                                                   RTOS
                                                         Embedded OS
OpenSplice DDS




                 Final Remarks
Concluding Remarks




                                                                                                      Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   With the DDS Everywhere platform we are making DDS available
                      on any device

                  ☐   That means that:
                      ☐   You can get DDS data from your system to anywhere
OpenSplice DDS




                      ☐   You can exploit the power of DDS across devices and technologies
                      ☐   You have a single technology end-to-end that provides optimal efficiency,
                          scalability, performance and more importantly data-centricity!
OpenSplice DDS
:: 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

More Related Content

PDF
Tuning and Troubleshooting OpenSplice DDS Applications
PDF
OpenSplice DDS v6
PDF
The Data Distribution Service
PDF
10 Reasons for Choosing OpenSplice DDS
PDF
DDS in Action -- Part I
PDF
The Data Distribution Service
PDF
The Data Distribution Service Tutorial
PDF
DDS + Android = OpenSplice Mobile
Tuning and Troubleshooting OpenSplice DDS Applications
OpenSplice DDS v6
The Data Distribution Service
10 Reasons for Choosing OpenSplice DDS
DDS in Action -- Part I
The Data Distribution Service
The Data Distribution Service Tutorial
DDS + Android = OpenSplice Mobile

What's hot (20)

PDF
The Present and Future of DDS
PDF
Getting Started with DDS in C++, Java and Scala
PDF
Data Sharing in Extremely Resource Constrained Envionrments
PDF
DDS Made Simple
PDF
20 Tips for OpenSplice Newbies
PDF
OpenSplice DDS Tutorial -- Part II
PDF
Classical Distributed Algorithms with DDS
PDF
Building IoT Applications with Vortex and the Intel Edison Starter Kit
PDF
Vortex Tutorial -- Part I
PDF
Vortex II -- The Industrial IoT Connectivity Standard
PDF
The Data Distribution Service Tutorial
PDF
OMG DDS: The Data Distribution Service for Real-Time Systems
PDF
Getting Started in DDS with C++ and Java
PDF
OMG DDS Tutorial - Part I
PDF
A Gentle Introduction to OpenSplice DDS
PDF
Advanced OpenSplice Programming - Part II
PDF
Micro services Architecture with Vortex -- Part I
PDF
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
PDF
DDS Tutorial -- Part I
PDF
Introducing Vortex Lite
The Present and Future of DDS
Getting Started with DDS in C++, Java and Scala
Data Sharing in Extremely Resource Constrained Envionrments
DDS Made Simple
20 Tips for OpenSplice Newbies
OpenSplice DDS Tutorial -- Part II
Classical Distributed Algorithms with DDS
Building IoT Applications with Vortex and the Intel Edison Starter Kit
Vortex Tutorial -- Part I
Vortex II -- The Industrial IoT Connectivity Standard
The Data Distribution Service Tutorial
OMG DDS: The Data Distribution Service for Real-Time Systems
Getting Started in DDS with C++ and Java
OMG DDS Tutorial - Part I
A Gentle Introduction to OpenSplice DDS
Advanced OpenSplice Programming - Part II
Micro services Architecture with Vortex -- Part I
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
DDS Tutorial -- Part I
Introducing Vortex Lite
Ad

Viewers also liked (20)

PDF
DDS on the Web: Quick Recipes for Real-Time Web Applications
PDF
RUSTing -- Partially Ordered Rust Programming Ruminations
PPSX
Animation in Diamond Resorts
PDF
UX / CX in the context of creative & marketing industry
KEY
PHP & XML: SimpleXML, DOMDocument
PPT
Sph 107 Ch 7
PPT
Sph 106 Ch 16
PPT
Greetings
PPT
SPH 107 Ch 3
PDF
Work Samples
PDF
Rupert 4.5 UDL and Backwards Design, Jan 2014
PDF
isd314-06-association-mining
PDF
MRLC Feb Reading
PPS
PDF
Qualicum engagement.novpptx
PPT
Naresh
PPT
Week 7 Cc 1
PDF
Выход Есть!
PDF
Option 2 - Coast
PDF
Introducing the OMG DDS to the Aerospace Valley
DDS on the Web: Quick Recipes for Real-Time Web Applications
RUSTing -- Partially Ordered Rust Programming Ruminations
Animation in Diamond Resorts
UX / CX in the context of creative & marketing industry
PHP & XML: SimpleXML, DOMDocument
Sph 107 Ch 7
Sph 106 Ch 16
Greetings
SPH 107 Ch 3
Work Samples
Rupert 4.5 UDL and Backwards Design, Jan 2014
isd314-06-association-mining
MRLC Feb Reading
Qualicum engagement.novpptx
Naresh
Week 7 Cc 1
Выход Есть!
Option 2 - Coast
Introducing the OMG DDS to the Aerospace Valley
Ad

Similar to DDS Everywhere (20)

PDF
Building and Deploying OpenSplice DDS Based Cloud Messaging
PDF
The OpenSplice DDS Revolution -- Episode II
PDF
DDS in SCADA, Utilities, Smart Grid and Smart Cities
PDF
Interoperable, Extensible and Efficient System Architectures
PDF
Advanced OpenSplice Programming - Part I
PDF
Got Big Data? Get OpenSplice!
PDF
DDS QoS Unleashed
PDF
Roadmap and Technology Incubators
PDF
Tweeting with OpenSplice DDS
PDF
Cloudand Xchange
PDF
DDS Interoperability Demo
PDF
Distributed Simulations with DDS and HLA
PDF
Cyclone DDS Unleashed: The Origins
PDF
Introduction to OMG DDS (1 hour, 45 slides)
PDF
RTI/Cisco response to the Software Defined Networks (SDN) OMG RFI
ODP
Liberate Your Files with a Private Cloud Storage Solution powered by Open Source
PDF
The Promise of Interoperability
PPTX
Cloud as a Flexible &amp; Collaborative Tool for Creators
PDF
Cloud State V02
PDF
Cisco open network environment
Building and Deploying OpenSplice DDS Based Cloud Messaging
The OpenSplice DDS Revolution -- Episode II
DDS in SCADA, Utilities, Smart Grid and Smart Cities
Interoperable, Extensible and Efficient System Architectures
Advanced OpenSplice Programming - Part I
Got Big Data? Get OpenSplice!
DDS QoS Unleashed
Roadmap and Technology Incubators
Tweeting with OpenSplice DDS
Cloudand Xchange
DDS Interoperability Demo
Distributed Simulations with DDS and HLA
Cyclone DDS Unleashed: The Origins
Introduction to OMG DDS (1 hour, 45 slides)
RTI/Cisco response to the Software Defined Networks (SDN) OMG RFI
Liberate Your Files with a Private Cloud Storage Solution powered by Open Source
The Promise of Interoperability
Cloud as a Flexible &amp; Collaborative Tool for Creators
Cloud State V02
Cisco open network environment

More from Angelo Corsaro (20)

PDF
Zenoh: The Genesis
PDF
zenoh: The Edge Data Fabric
PDF
Zenoh Tutorial
PDF
zenoh: zero overhead pub/sub store/query compute
PDF
zenoh -- the ZEro Network OverHead protocol
PDF
zenoh -- the ZEro Network OverHead protocol
PDF
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
PDF
Eastern Sicily
PDF
fog05: The Fog Computing Infrastructure
PDF
Cyclone DDS: Sharing Data in the IoT Age
PDF
fog05: The Fog Computing Platform
PDF
Programming in Scala - Lecture Four
PDF
Programming in Scala - Lecture Three
PDF
Programming in Scala - Lecture Two
PDF
Programming in Scala - Lecture One
PDF
The DDS Security Standard
PDF
Fog Computing Defined
PDF
DDS In Action Part II
PDF
DDS and OPC UA Explained
PDF
The Cloudy, Foggy and Misty Internet of Things -- Toward Fluid IoT Architect...
Zenoh: The Genesis
zenoh: The Edge Data Fabric
Zenoh Tutorial
zenoh: zero overhead pub/sub store/query compute
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Eastern Sicily
fog05: The Fog Computing Infrastructure
Cyclone DDS: Sharing Data in the IoT Age
fog05: The Fog Computing Platform
Programming in Scala - Lecture Four
Programming in Scala - Lecture Three
Programming in Scala - Lecture Two
Programming in Scala - Lecture One
The DDS Security Standard
Fog Computing Defined
DDS In Action Part II
DDS and OPC UA Explained
The Cloudy, Foggy and Misty Internet of Things -- Toward Fluid IoT Architect...

Recently uploaded (20)

PPTX
OMC Textile Division Presentation 2021.pptx
PDF
A comparative analysis of optical character recognition models for extracting...
PPTX
1. Introduction to Computer Programming.pptx
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PPTX
cloud_computing_Infrastucture_as_cloud_p
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Hybrid model detection and classification of lung cancer
PDF
Getting Started with Data Integration: FME Form 101
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
Chapter 5: Probability Theory and Statistics
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
Heart disease approach using modified random forest and particle swarm optimi...
OMC Textile Division Presentation 2021.pptx
A comparative analysis of optical character recognition models for extracting...
1. Introduction to Computer Programming.pptx
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
cloud_computing_Infrastucture_as_cloud_p
Digital-Transformation-Roadmap-for-Companies.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Hybrid model detection and classification of lung cancer
Getting Started with Data Integration: FME Form 101
Programs and apps: productivity, graphics, security and other tools
1 - Historical Antecedents, Social Consideration.pdf
NewMind AI Weekly Chronicles - August'25-Week II
Chapter 5: Probability Theory and Statistics
Unlocking AI with Model Context Protocol (MCP)
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
A Presentation on Artificial Intelligence
Enhancing emotion recognition model for a student engagement use case through...
Heart disease approach using modified random forest and particle swarm optimi...

DDS Everywhere

  • 1. OpenSplice DDS Everywhere OpenSplice DDS Angelo CORSARO, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com
  • 2. DDS Everywhere Platform A DDS-based, interoperable Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ product family addressing OpenSplice OpenSplice systems needs from Embedded Cloud Community and Mobile to Enterprise and Cloud OpenSplice OpenSplice DDS ☐ An Open Source core providing free access to the OpenSplice OpenSplice OpenSplice Ecosystem, security of supply and Enterprise Embedded a vibrant, innovative community
  • 3. DDS Everywhere Platform Consumer Platforms ☐ Browser / HTML5 Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ iOS OpenSplice OpenSplice ☐ Android ☐ Cloud Cloud Community ☐ No-SQL ☐ Mobile/WiFi IP Transp. OpenSplice OpenSplice DDS ☐ RTOS (VxWorks, QNX, ☐ OS (Linux, Windows, etc) etc.) ☐ Cloud ☐ FPGA OpenSplice OpenSplice ☐ DBMS ☐ BSP / No-OS ☐ No-SQL Enterprise Embedded ☐ IP + Exotic ☐ InfiniBand + IP Transports Transports Industrial IT Platforms Platforms
  • 4. DDS Everywhere Platform ☐ Mobility ☐ Elasticity ☐ Cloud Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Integration OpenSplice OpenSplice Cloud Community OpenSplice OpenSplice DDS ☐ Fault-Tolerance OpenSplice OpenSplice ☐ Throughput Enterprise Embedded ☐ Scalability ☐ Latency ☐ Determinism ☐ Latency ☐ Security ☐ Footprint ☐ Integration
  • 6. Key Highlights ☐ The best middleware OpenSplice OpenSplice Copyright  2011,  PrismTech  –    All  Rights  Reserved. Cloud Community infrastructure to Simplify Distributed System Development OpenSplice ☐ Reduce complexity of OpenSplice DDS building, testing, integrating, OpenSplice OpenSplice OpenSplice and deploying high- Tools Enterprise Embedded performance, scalable, and fault-tolerant distributed systems OpenSplice DDS
  • 7. OpenSplice DDS New in v6.3
  • 8. OpenSplice DDSI2E Enhanced version of the Interoperable wire Copyright  2011,  PrismTech  –    All  Rights  Reserved. protocol DDSI v2.1 Discovery ☐ Standardized discovery (locators) ☐ Dynamic unicast/multicast selection ☐ Optional static discovery OpenSplice DDS Real-Time ☐ independently scheduled priority-lanes ☐ Support for Logical and Physical Partitioning ☐ Traffic-Shaping Security ☐ Encrypted network-Partitions
  • 9. Record and Replay ☐ Dynamic recording of any topic- Copyright  2011,  PrismTech  –    All  Rights  Reserved. data in a DDS system ☐ Selective replay with variable RnR RnR RnR speed Service Service(s) Manager ☐ Distributed control by topic-based Record/Replay command Record/Replay command Any topic API (‘command’ & ‘status’ topics) OpenSplice DDS & status topics & status topics OpenSplice DDS ☐ Seamless integration with OpenSplice Tester (topic-based API) ☐ Dedicated RnR-Manager graphical GUI for scenario-definition and data import/analysis
  • 10. OpenSplice DDS Record and Replay Tool Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • 11. New DDS APIs Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ The original DDS API introduces some unnecessary accidental complexity OpenSplice DDS ☐ We’ve been working hard to standardize new C++/Java API for DDS that makes using it as simple as possible
  • 12. Statistics Simple DataWriter with default QoS DDS v1.2 C++ API ISO C++ API Copyright  2011,  PrismTech  –    All  Rights  Reserved. 15 ☐ The new API reduces the number of lines of code 11 from 3x to 5x when compared to the original OpenSplice DDS 8 DDS API! ☐ Less code means less bugs 4 0 SLOC
  • 13. struct ShapeType { ISO C++ DDS API string color; long x; long y; long shapesize; }; #pragma keylist ShapeType color int main(int argc, char* argv[]) { try { Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Simple, Compact and ! ! // Create DomainParticipant DomainParticipant dp = DomainParticipant(0); Elegant ! ! // Create Topic Topic<ShapeType> topic(dp, "Circle"); // Create Publisher ! ! Publisher pub(dp); ☐ Type-safe // Create DataWriter QoS DataWriterQos dwqos = pub.default_datawriter_qos() << Durability::Transient() ☐ Orthogonal << History::KeepLast(10); OpenSplice DDS // Create DataWriter ! ! DataWriter<ShapeType> dw(pub, topic, dwqos); ☐ Efficient // Write ShapeType s = {"RED", 50, 70, 90}; dw << s; // - or - ☐ QoS DSL dw.write(s); ! ! ! } catch (const dds::core::Exception& e) { ! ! std::cout << e.what() << std::endl; ! } ! return 0; }
  • 14. ISO C++ DDS API Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Unified and composable data selection API std::vector<std::string> p; p.push_back("100"); p.push_back("200"); OpenSplice DDS Query q("x < %0 AND y < %1", p); auto data = reader ! .select() .instance(handle) // -- Select Instance ! ! .state(status::DataState::new_data()) // -- Filter on State ! ! .content(q) // -- Filter on Content .read(); // -- Execute the selection and read the data
  • 15. Example: DataWriter int main(int argc, char* argv[]) { try { ! ! DomainParticipant dp(0); Copyright  2011,  PrismTech  –    All  Rights  Reserved. ! ! Topic<ShapeType> topic(dp, "Circle"); ! ! Publisher pub(dp); ! ! DataWriter<ShapeType> dw(pub, topic); ! ! uint32_t pos = 0; ! ! const uint32_t N = 300; ! ! for (int i = 0; i < N; ++i) { ! ! ! ShapeType bc = {"RED", i, i, 60}; OpenSplice DDS ! ! ! ShapeType rc = {"BLUE", N-i, N-i, 60}; ! ! ! dw << rc; ! ! ! usleep(10000); ! ! } ! } catch (const dds::core::Exception& e) { ! ! std::cout << e.what() << std::endl; ! } ! return 0; }
  • 16. Example: DataReader int main(int argc, char* argv[]) { try { DomainParticipant dp(0); Copyright  2011,  PrismTech  –    All  Rights  Reserved. Topic<ShapeType> topic(dp, "Circle"); Subscriber sub(dp); DataReader<ShapeType> dr(sub, topic); uint32_t pos = 0; const uint32_t N = 300; uint32_t max_size = 10; const uint32_t sleepTime = 500000; OpenSplice DDS while (true) { LoanedSamples<ShapeType> samples = dr.read(); std::cout << "-----------" << std::endl; for_each(samples.begin(), samples.end(), printShapeSample); usleep(sleepTime); } } catch (const dds::core::Exception& e) { std::cout << e.what() << std::endl; } return 0; }
  • 17. Full C++ Shapes Application see: Copyright  2011,  PrismTech  –    All  Rights  Reserved. github.com/kydos/dds-psm-cxx/tree/master/examples/ishapes-driver OpenSplice DDS
  • 19. Key Highlights OpenSplice Gateway Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Brings DDS on mobile devices powered by OpenSplice OpenSplice OpenSplice Android/iOS Mobile Cloud Community ☐ Enables DDS-based OpenSplice OpenSplice DDS Cloud Messaging for higher scalability, throughout and minimal OpenSplice OpenSplice cost per message Enterprise Embedded
  • 20. OpenSplice Mobile Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Pure Java version of OpenSplice targeting the JVM DCPS Java 5 / Scala API ☐ DDSI Protocol Stack optimized DDSI for mobility and Android OS (Optimized for Mobility) OpenSplice DDS ☐ Only DDS on the market designed and Engineered for Android and the JVM
  • 21. OpenSplice DDS OpenSplice Mobile Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • 22. OpenSplice DDS Demo Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • 23. Java 5 PSM Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Idiomatic and ergonomic DDS API for Java ☐ Guaranteed code portability through clean separation of standard API (in an OMG provided JAR) and vendor implementation OpenSplice DDS ☐ QoS and Selector DSL simplify programming and make code more readable ☐ QoS Provider allows to “externalize” the QoS configuration
  • 24. Java Shapes -- Reader package  org.omg.demo.dds.shapes; import  ...; Copyright  2011,  PrismTech  –    All  Rights  Reserved. /**  *  This  class  provides  a  simple  example  of  a  DDS  data  reader  using  the  new  Java  API.  */ public  class  ShapesReader  {        public  static  void  main(String  args[])  throws  Exception  {                if  (args.length  <  1)  {                        System.out.println("USAGE:ntShapesWriter  <topic>");                        System.out.println("nttopic  =  [Circle,  Square,  Triangle]"); OpenSplice DDS                        System.exit(1);                }                final  String  shape  =                                args[1].substring(0,1).toUpperCase()  +   args[1].substring(1,args[1].length()).toLowerCase();                final  ServiceEnvironment  env  =                                ServiceEnvironment.createInstance(ShapesWriter.class.getClassLoader());
  • 25. Java Shapes -- Reader                DomainParticipantFactory  factory  =                                DomainParticipantFactory.getInstance(env);                DomainParticipant  dp  =  factory.createParticipant(); Copyright  2011,  PrismTech  –    All  Rights  Reserved.                final  PolicyFactory  pf  =  env.getSPI().getPolicyFactory();                TopicQos  tqos  =  dp.getDefaultTopicQos();                tqos.withPolicies(pf.Durability().withTransient(),                                                        pf.Reliability().withReliable());                Topic<ShapeType>  topic  =  dp.createTopic(shape,  ShapeType.class);                Subscriber  sub  =  dp.createSubscriber(); OpenSplice DDS                DataReaderQos  drqos  =                                sub.getDefaultDataReaderQos().withPolicies(                                                pf.Reliability().withBestEffort(),                                                pf.Durability().withTransient()                                );                DataReader<ShapeType>  dr  =                                sub.createDataReader(topic,  drqos,  new  ShapeTypeListener(),  Status.allStatuses(env));                Thread.currentThread().join();        } }
  • 26. Java Shapes -- Writer public  class  ShapesWriter  {        public  static  void  main(String  args[])  throws  Exception  {                if  (args.length  <  4)  { Copyright  2011,  PrismTech  –    All  Rights  Reserved.                        System.out.println("USAGE:ntShapesWriter  <topic>  <circle>  <samples>  <period  ms>");                        System.out.println("nttopic  =  [Circle,  Square,  Triangle]");                        System.out.println("tcolor  =  [Red,  Blue,  Green,  Magenta,  Cyan]");                        System.exit(1);                }                final  String  shape  =                                args[1].substring(0,1).toUpperCase()  +  args[1].substring(1,args[1].length()).toLowerCase();                final  String  color  =  args[1].toUpperCase(); OpenSplice DDS                final  int  samples  =  Integer.parseInt(args[2]);                final  int  period  =  Integer.parseInt(args[3]);                final  int  bound  =  100;                final  ServiceEnvironment  env  =                                ServiceEnvironment.createInstance(ShapesWriter.class.getClassLoader());
  • 27. Java Shapes -- Writer                final  PolicyFactory  pf  =  env.getSPI().getPolicyFactory();                DomainParticipantFactory  factory  =                                DomainParticipantFactory.getInstance(env);                DomainParticipant  dp  =  factory.createParticipant(); Copyright  2011,  PrismTech  –    All  Rights  Reserved.                Topic<ShapeType>  topic  =  dp.createTopic(shape,  ShapeType.class);                Publisher  pub  =dp.createPublisher();                DataWriterQos  dwqos  =                                pub.getDefaultDataWriterQos().withPolicies(                                                pf.Reliability().withBestEffort(),                                                pf.Durability().withTransient());                DataWriter<ShapeType>  dw  =  pub.createDataWriter(topic); OpenSplice DDS                final  ShapeType  sample  =  new  ShapeType(color,  0,  0,  0);                for  (int  i  =  0;  i  <  samples;  ++i)  {                        sample                                .setX(((int)Math.random()%bound))                                .setY(((int)Math.random()%bound))                                .setShapesize(((int)Math.random()%bound));                        dw.write(sample);                        Thread.sleep(period);                }        } }
  • 28. Performance Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ OpenSplice Mobile v1.0 beta features already very good performance ☐ Latency is low and pretty OpenSplice DDS stable ~3usec of difference from 32 to 1024 bytes
  • 29. OpenSplice Gateway JMS Integration technology providing Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ XM connectivity from DDS to over 80 ST PP RE OpenSplice technologies, including WebSockets Gateway P and REST Cu AMQ sto m ☐ Java-based and easily deployable OpenSplice DDS DDSI-RTPS on the cloud Supported Connectors Include: ☐ Key building block for OpenSplice - JMS - HTTP - REST - AMQP Based Cloud Messaging Solutions - CometD - XMPP - CFX - Hibernate -WebSockets -HBase - TCP, UDP Sockets - Custom
  • 30. WebSocket Integration 1 // Define endpoints 2 val inEndpoint = Copyright  2011,  PrismTech  –    All  Rights  Reserved. 3 "ddsi:"+ inTopic +":"+ inDomain +"/" + shapeType 4 val outEndpoint = 5 "websocket://"+inTopic.toLowerCase + "?sendToAll=true" 6 7 // Define a Route using the Scala DSL 8 val shapesRoute = new RouteBuilder { 9 override def configure() = OpenSplice DDS 10 from(inEndpoint) unmarshal("cdr") marshal() json() to(outEndpoint) To JSON 11 } Topic “Circle” ☐ This example requires Camel 2.10 DDS Domain 0
  • 31. TCP/UDP Tunneling DDS Domain 0 ☐ Integrate different DDS Domains via TCP (or UDP) Topic “Circle” tunnel ☐ Per Topic bridging ☐ Unidirectional or bidirectional GW 1 ☐ Possibly adding SSL/TLS TCP OpenSplice DDS GW 2 1 // on GW1: 2 from("ddsi:Circle:0/ShapeType") 3 to("netty:tcp://localhost:6789?sync=false"); Topic “Circle” 1 // on GW2: 2 from("netty:tcp://localhost:6789?sync=false") 3 to("ddsi:Circle:0/ShapeType"); DDS Domain 0
  • 33. Key Highlights OpenSplice OpenSplice Copyright  2011,  PrismTech  –    All  Rights  Reserved. Cloud Community ☐ The OpenSplice Embedded Product family brings DDS OpenSplice connectivity to devices and OpenSplice OpenSplice DDS resource constrained real- OpenSplice OpenSplice Integrator time embedded systems Enterprise Embedded OpenSplice Lite OpenSplice RTE
  • 34. FPGA Integrator GIOP/DDSI DDS Copyright  2011,  PrismTech  –    All  Rights  Reserved. Data Bridge Reader FPGA Data Writer GIOP Data Reader Data TopicD ICO GIOP DDSI Writer TopicA Data TopicB Reader Data Writer TopicC ... Data Data Writer Reader OpenSplice DDS DDS Global Data Space ☐ ‘Out-of-the-box’ solution for integrating FPGA’s withDDS based systems ☐ Bridges the device-data (via GIOP) to the DDS-based system using a software ‘gateway’ providing full DDS QoS support to maintain & distribute the device-data ☐ Bridge-technology is be based either: ☐ OpenSplice Gateway (if a Java platform is available) or ☐ A small OpenSplice bridge application or pluggable-service
  • 35. OpenSplice Lite ISO C++ API ☐ Bring software-based DDS Copyright  2011,  PrismTech  –    All  Rights  Reserved. implementation to a range of resource constrained devices Native C API ☐ Allow for variability on functionalities, transport and support of underlying OS/ DDSI / DDSI-E BSP OS Transport OpenSplice DDS ☐ Provides very low footprint and very high Abstraction Abstraction performance ☐ Footprint as low as 100/200 KB RTOS DSP Latency as low as 35-45 usec (on Gigabit uController ☐ GPP network)
  • 36. OpenSplice RTE ☐ Bring the full power of DDS to real- Copyright  2011,  PrismTech  –    All  Rights  Reserved. time embedded systems DCPS API (C/C++/RT-Java) ☐ Provides low footprint, superlative DDSI-E / RT-NET scalability and and high performance OS OpenSplice DDS Abstraction ☐ Footprint 2MB RTOS ☐ Latency 75/80 usec (on Gigabit network) GPP
  • 37. Putting it all Together OpenSplice DDS
  • 38. DDS Everywhere! OpenSplice Mobile OpenSplice Mobile Embedded JVM OpenSplice DDS Enterprise OpenSplice DDS OpenSplice Enterprise OS MQTT, AMQP, Gateway JMS, REST, .... OpenSplice OpenSplice RTE Lite RTOS Embedded OS
  • 39. OpenSplice DDS Final Remarks
  • 40. Concluding Remarks Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ With the DDS Everywhere platform we are making DDS available on any device ☐ That means that: ☐ You can get DDS data from your system to anywhere OpenSplice DDS ☐ You can exploit the power of DDS across devices and technologies ☐ You have a single technology end-to-end that provides optimal efficiency, scalability, performance and more importantly data-centricity!
  • 42. :: 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