SlideShare a Scribd company logo
1 of 23
Download to read offline
©2017 Real-Time Innovations,
Inc.
Tutorial: DDS first steps with Connector
Javier Povedano, PhD.
javier@rti.com
Real-Time Innovations Inc.
©2017 Real-Time Innovations,
Inc.
Agenda
• DDS
• Connector
• Setup your environment
• Hands On!
– Publishing/Subscribing to Data
– Data Filtering
– High-Availability
– Late joiners
– Partitions
©2017 Real-Time Innovations,
Inc.
DDS Shapes Demo
https://www.rti.com/downloads/shapes-demo
©2017 Real-Time Innovations,
Inc.
What is Connector?
• Simple API for Data-Centric Publish/Subscribe
– Built on top of DDS
– Very few methods
– Experimental
• Scripting language bindings
– node.js, python, nodered
• Prototyping
– Entities and QoS configured by XML
©2017 Real-Time Innovations,
Inc.
2016 © Real-Time Innovations Inc.
Classical DDS Workflow
IDL/XML
struct Position2D {
long id; //@key
double x;
double y;
};
Code
Generation
struct Temp {
long id;
//@key
double
value;
};
struct Temp {
long id;
//@key
double
value;
};
#include <...>
define Position2D;
Pos2DWriter::write
Pos2DReader::read
C/C++/Java/C#
<xml QoS>
QoS Settings
Type
Definition
Code ready to be built in +50 architectures: Linux, Windows,
VxWorks, Integrity….
This process can be simplified even more: RTI
Prototyper/Connector
©2017 Real-Time Innovations,
Inc.
Connector Workflow
Python/Lua/NodeJS
Interpreter
<xml QoS>
<types>
<scenario description>
Python/Lua/NodeJS
script
©2017 Real-Time Innovations,
Inc.
Input
Data Port
(DataReader+)Output
Data Port
(DataWriter+)
DDS Connector Input & Output ports
Connector (DomainParticipant+)
output()
write() / dispose() /
unregister()
clear_members()
instance
input()
wait() / on()
read() / take()
samples[]
config.xml
User
Defined
Structure
XML Config
©2017 Real-Time Innovations,
Inc.
2016 © Real-Time Innovations Inc.
Anatomy of a Publisher in Connector
1. connector =
rti.Connector("MyParticipantLibrary::Sensor",'Tutorial.xml')
2. writer = connector.getOutput("TempPublisher::TempWriter")
3. writer.instance.setString('id', sensor.id)
4. writer.write()
1. Create a connector
2. Get the DataWriter
3. Set the instance values
4. Write the value
©2017 Real-Time Innovations,
Inc.
2016 © Real-Time Innovations Inc.
Anatomy of a Subscriber in Connector
1. connector = rti.Connector("MyParticipantLibrary::Sensor", 'Tutorial.xml')
2. reader = connector.getInput("TempPublisher::TempWriter")
3. reader.read()
4. for i in nsamples:
if reader.infos.isvalid(i)
sample = reader.samples.getDictionary(i)
1. Create a connector
2. Get the datareader
3. Read/Take the value
4. Iterate for all the samples
a. if is valid
i. get the sample
©2017 Real-Time Innovations,
Inc.
Setup
Installing the tutorial
> git clone https://github.com/jpovedano/dds-firststeps
> ./setup
In each terminal:
> . rticonnectenv/bin/activate
©2017 Real-Time Innovations,
Inc.
Let's Rock!
Hands On Exercise
©2017 Real-Time Innovations,
Inc.
About the examples
• Temperature sensor scenario
– Sensors (publishers)
• Publish temperature data every
second
– Console (suscribers)
• Shows a table with data being
published
• Configured by XML
– Tutorial.xml
• Define the DDS entities and their QoS
settings
struct Sensor {
string id; //@key
long value;
long timestamp;
};
©2017 Real-Time Innovations,
Inc.
Anatomy of the XML
1. QoS Library
a. QoS Settings
2. Types
a. Type Definition
3. Domain Library
a. Domains and Topics
4. Participant Library
a. DDS Entities hierarchy
<!-- Qos Library -->
<qos_library name="QosLibrary">
<qos_profile name="DefaultProfile" is_default_qos="true">
<participant_qos>
<transport_builtin>
<!-- <mask>UDPV4 | SHMEM</mask>-->
<mask> SHMEM</mask>
</transport_builtin>
</participant_qos>
<datareader_qos>
<!-- Modify reader values here -->
</datareader_qos>
</qos_profile>
</qos_library>
©2017 Real-Time Innovations,
Inc.
Anatomy of the XML
1. QoS Library
a. QoS Settings
2. Types
a. Type Definition
3. Domain Library
a. Domains and Topics
4. Participant Library
a. DDS Entities hierarchy
<types>
<struct name="Sensor" extensibility="extensible">
<member name="id" stringMaxLength="128" id="0" type="string"
key="true"/>
<member name="value" id="1" type="long"/>
<member name="timestamp" id="2" type="long"/>
</struct>
</types>
©2017 Real-Time Innovations,
Inc.
Anatomy of the XML
1. QoS Library
a. QoS Settings
2. Types
a. Type Definition
3. Domain Library
a. Domains and Topics
4. Participant Library
a. DDS Entities hierarchy
<!-- Domain Library -->
<domain_library name="MyDomainLibrary">
<domain name="MyDomain" domain_id="0">
<register_type name="Sensor" kind="dynamicData"
type_ref="Sensor"/>
<topic name="Temperature" register_type_ref="Sensor"/>
</domain>
</domain_library>
©2017 Real-Time Innovations,
Inc.
Anatomy of the XML
1. QoS Library
a. QoS Settings
2. Types
a. Type Definition
3. Domain Library
a. Domains and Topics
4. Participant Library
a. DDS Entities hierarchy
<!-- Participant library -->
<participant_library name="MyParticipantLibrary">
<domain_participant name="Console"
domain_ref="MyDomainLibrary::MyDomain">
<subscriber name="TempSubscriber">
<data_reader name="TempReader" topic_ref="Temperature"/>
</subscriber>
</domain_participant>
<domain_participant name="Sensor"
domain_ref="MyDomainLibrary::MyDomain">
<publisher name="TempPublisher">
<data_writer name="TempWriter" topic_ref="Temperature"/>
</publisher>
</domain_participant>
</participant_library>
©2017 Real-Time Innovations,
Inc.
Example 1: Basic pub/sub
• Goal
– In this example we show how to publish data
– Learn differences between read/take
– Learn how to change QoS settings in Connector
• Documentation:
– QoS Policy Reference Guide (cheat-sheet)
©2017 Real-Time Innovations,
Inc.
Example 2: Filtering
• Goal
– Learn how to filter data per subscriber
• Description
– The console application will only receive the data matching a
certain criteria
• Two types of Filtering:
– Content Based
• Use a filter with SQL Expression
– Time Based
• time_based_filter QoS
©2017 Real-Time Innovations,
Inc.
Example 3: High availability
• Goal
– Learn how to add robustness using DDS QoS
• Description
– Adding a backup sensor that substitute the primary sensor in case
of failure
• QoS:
– Liveliness
– Ownership
– Ownership strength
©2017 Real-Time Innovations,
Inc.
Example 4: Durability
• Goal
– Learn how to provide recent history to late joiners
• Description
– A console application will receive the recent history published
before it was started
• QoS:
– Durability QoS
©2017 Real-Time Innovations,
Inc.
Example 5: Data Isolation/Partition
• Goal
– Learn how to isolate publishers and subscribers within the same
domain
• Description
– A console application will receive sensor updates only for
subscribers in certain zones
• QoS:
– Partition QoS
©2017 Real-Time Innovations,
Inc.
Example 6
• Goal
– create your own distributed application and share it with the
community
• Description
– Let your imagination fly!
• References
– XML Application creation
©2017 Real-Time Innovations,
Inc.
Thanks for your attention!

More Related Content

What's hot

Advanced Container Management and Scheduling - DevDay Austin 2017
Advanced Container Management and Scheduling - DevDay Austin 2017Advanced Container Management and Scheduling - DevDay Austin 2017
Advanced Container Management and Scheduling - DevDay Austin 2017Amazon Web Services
 
How to Protect Big Data in a Containerized Environment
How to Protect Big Data in a Containerized EnvironmentHow to Protect Big Data in a Containerized Environment
How to Protect Big Data in a Containerized EnvironmentBlueData, Inc.
 
The Data Mullet: From all SQL to No SQL back to Some SQL
The Data Mullet: From all SQL to No SQL back to Some SQLThe Data Mullet: From all SQL to No SQL back to Some SQL
The Data Mullet: From all SQL to No SQL back to Some SQLDatadog
 
AWS Summit Stockholm 2014 – T1 – Architecting highly available applications o...
AWS Summit Stockholm 2014 – T1 – Architecting highly available applications o...AWS Summit Stockholm 2014 – T1 – Architecting highly available applications o...
AWS Summit Stockholm 2014 – T1 – Architecting highly available applications o...Amazon Web Services
 
Distributed Database DevOps Dilemmas? Kubernetes to the Rescue
Distributed Database DevOps Dilemmas? Kubernetes to the RescueDistributed Database DevOps Dilemmas? Kubernetes to the Rescue
Distributed Database DevOps Dilemmas? Kubernetes to the RescueDenis Magda
 
What We Learned About Cassandra While Building go90 (Christopher Webster & Th...
What We Learned About Cassandra While Building go90 (Christopher Webster & Th...What We Learned About Cassandra While Building go90 (Christopher Webster & Th...
What We Learned About Cassandra While Building go90 (Christopher Webster & Th...DataStax
 
Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum Efficiency
Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum EfficiencyDeploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum Efficiency
Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum EfficiencyAmazon Web Services
 
Apache Spark and Apache Ignite: Where Fast Data Meets the IoT
Apache Spark and Apache Ignite: Where Fast Data Meets the IoTApache Spark and Apache Ignite: Where Fast Data Meets the IoT
Apache Spark and Apache Ignite: Where Fast Data Meets the IoTDenis Magda
 
Implementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian BambooImplementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian BambooDave Clark
 
Cloud-Native DDoS Mitigation - AWS Online Tech Talks
Cloud-Native DDoS Mitigation - AWS Online Tech TalksCloud-Native DDoS Mitigation - AWS Online Tech Talks
Cloud-Native DDoS Mitigation - AWS Online Tech TalksAmazon Web Services
 
Infrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and OpsInfrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and OpsMykyta Protsenko
 
Kubernetes stack reliability
Kubernetes stack reliabilityKubernetes stack reliability
Kubernetes stack reliabilityOleg Chunikhin
 
Cloud for Kubernetes : Session4
Cloud for Kubernetes : Session4Cloud for Kubernetes : Session4
Cloud for Kubernetes : Session4WhaTap Labs
 
Joyent Cloud Advantages
Joyent Cloud AdvantagesJoyent Cloud Advantages
Joyent Cloud Advantagesdmasciorini
 
Adam Dagnall: Advanced S3 compatible storage integration in CloudStack
Adam Dagnall: Advanced S3 compatible storage integration in CloudStackAdam Dagnall: Advanced S3 compatible storage integration in CloudStack
Adam Dagnall: Advanced S3 compatible storage integration in CloudStackShapeBlue
 
In-Memory Computing Essentials for Architects and Engineers
In-Memory Computing Essentials for Architects and EngineersIn-Memory Computing Essentials for Architects and Engineers
In-Memory Computing Essentials for Architects and EngineersDenis Magda
 
Orchestration & provisioning
Orchestration & provisioningOrchestration & provisioning
Orchestration & provisioningbuildacloud
 
DataStax | Best Practices for Securing DataStax Enterprise (Matt Kennedy) | C...
DataStax | Best Practices for Securing DataStax Enterprise (Matt Kennedy) | C...DataStax | Best Practices for Securing DataStax Enterprise (Matt Kennedy) | C...
DataStax | Best Practices for Securing DataStax Enterprise (Matt Kennedy) | C...DataStax
 

What's hot (20)

Advanced Container Management and Scheduling - DevDay Austin 2017
Advanced Container Management and Scheduling - DevDay Austin 2017Advanced Container Management and Scheduling - DevDay Austin 2017
Advanced Container Management and Scheduling - DevDay Austin 2017
 
How to Protect Big Data in a Containerized Environment
How to Protect Big Data in a Containerized EnvironmentHow to Protect Big Data in a Containerized Environment
How to Protect Big Data in a Containerized Environment
 
The Data Mullet: From all SQL to No SQL back to Some SQL
The Data Mullet: From all SQL to No SQL back to Some SQLThe Data Mullet: From all SQL to No SQL back to Some SQL
The Data Mullet: From all SQL to No SQL back to Some SQL
 
AWS Summit Stockholm 2014 – T1 – Architecting highly available applications o...
AWS Summit Stockholm 2014 – T1 – Architecting highly available applications o...AWS Summit Stockholm 2014 – T1 – Architecting highly available applications o...
AWS Summit Stockholm 2014 – T1 – Architecting highly available applications o...
 
Deploying Big-Data-as-a-Service (BDaaS) in the Enterprise
Deploying Big-Data-as-a-Service (BDaaS) in the EnterpriseDeploying Big-Data-as-a-Service (BDaaS) in the Enterprise
Deploying Big-Data-as-a-Service (BDaaS) in the Enterprise
 
Distributed Database DevOps Dilemmas? Kubernetes to the Rescue
Distributed Database DevOps Dilemmas? Kubernetes to the RescueDistributed Database DevOps Dilemmas? Kubernetes to the Rescue
Distributed Database DevOps Dilemmas? Kubernetes to the Rescue
 
What We Learned About Cassandra While Building go90 (Christopher Webster & Th...
What We Learned About Cassandra While Building go90 (Christopher Webster & Th...What We Learned About Cassandra While Building go90 (Christopher Webster & Th...
What We Learned About Cassandra While Building go90 (Christopher Webster & Th...
 
Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum Efficiency
Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum EfficiencyDeploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum Efficiency
Deploying a Disaster Recovery Site on AWS: Minimal Cost with Maximum Efficiency
 
Apache Spark and Apache Ignite: Where Fast Data Meets the IoT
Apache Spark and Apache Ignite: Where Fast Data Meets the IoTApache Spark and Apache Ignite: Where Fast Data Meets the IoT
Apache Spark and Apache Ignite: Where Fast Data Meets the IoT
 
Implementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian BambooImplementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian Bamboo
 
Cloud-Native DDoS Mitigation - AWS Online Tech Talks
Cloud-Native DDoS Mitigation - AWS Online Tech TalksCloud-Native DDoS Mitigation - AWS Online Tech Talks
Cloud-Native DDoS Mitigation - AWS Online Tech Talks
 
Infrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and OpsInfrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and Ops
 
OpenStack Report
OpenStack ReportOpenStack Report
OpenStack Report
 
Kubernetes stack reliability
Kubernetes stack reliabilityKubernetes stack reliability
Kubernetes stack reliability
 
Cloud for Kubernetes : Session4
Cloud for Kubernetes : Session4Cloud for Kubernetes : Session4
Cloud for Kubernetes : Session4
 
Joyent Cloud Advantages
Joyent Cloud AdvantagesJoyent Cloud Advantages
Joyent Cloud Advantages
 
Adam Dagnall: Advanced S3 compatible storage integration in CloudStack
Adam Dagnall: Advanced S3 compatible storage integration in CloudStackAdam Dagnall: Advanced S3 compatible storage integration in CloudStack
Adam Dagnall: Advanced S3 compatible storage integration in CloudStack
 
In-Memory Computing Essentials for Architects and Engineers
In-Memory Computing Essentials for Architects and EngineersIn-Memory Computing Essentials for Architects and Engineers
In-Memory Computing Essentials for Architects and Engineers
 
Orchestration & provisioning
Orchestration & provisioningOrchestration & provisioning
Orchestration & provisioning
 
DataStax | Best Practices for Securing DataStax Enterprise (Matt Kennedy) | C...
DataStax | Best Practices for Securing DataStax Enterprise (Matt Kennedy) | C...DataStax | Best Practices for Securing DataStax Enterprise (Matt Kennedy) | C...
DataStax | Best Practices for Securing DataStax Enterprise (Matt Kennedy) | C...
 

Similar to DDS tutorial with connector

Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017Werner Keil
 
2017 Microservices Practitioner Virtual Summit: Ancestry's Journey towards Mi...
2017 Microservices Practitioner Virtual Summit: Ancestry's Journey towards Mi...2017 Microservices Practitioner Virtual Summit: Ancestry's Journey towards Mi...
2017 Microservices Practitioner Virtual Summit: Ancestry's Journey towards Mi...Ambassador Labs
 
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...Martijn de Jong
 
Fiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPSFiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPSJaime Martin Losa
 
The Rise of DataOps: Making Big Data Bite Size with DataOps
The Rise of DataOps: Making Big Data Bite Size with DataOpsThe Rise of DataOps: Making Big Data Bite Size with DataOps
The Rise of DataOps: Making Big Data Bite Size with DataOpsDelphix
 
Docker Usage Patterns - Meetup Docker Paris - November, 10th 2015
Docker Usage Patterns - Meetup Docker Paris - November, 10th 2015Docker Usage Patterns - Meetup Docker Paris - November, 10th 2015
Docker Usage Patterns - Meetup Docker Paris - November, 10th 2015Datadog
 
Mapping the RESTful Programming Model to the DDS Data-Centric Model
Mapping the RESTful Programming Model to the DDS Data-Centric ModelMapping the RESTful Programming Model to the DDS Data-Centric Model
Mapping the RESTful Programming Model to the DDS Data-Centric ModelRick Warren
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsJaime Martin Losa
 
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...Istvan Rath
 
Cortex: Horizontally Scalable, Highly Available Prometheus
Cortex: Horizontally Scalable, Highly Available PrometheusCortex: Horizontally Scalable, Highly Available Prometheus
Cortex: Horizontally Scalable, Highly Available PrometheusGrafana Labs
 
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...Amazon Web Services
 
Fiware: Connecting to robots
Fiware: Connecting to robotsFiware: Connecting to robots
Fiware: Connecting to robotsJaime Martin Losa
 
OpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part IIOpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part IIAngelo Corsaro
 
Estimating the Total Costs of Your Cloud Analytics Platform
Estimating the Total Costs of Your Cloud Analytics PlatformEstimating the Total Costs of Your Cloud Analytics Platform
Estimating the Total Costs of Your Cloud Analytics PlatformDATAVERSITY
 
Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...
Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...
Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...Real-Time Innovations (RTI)
 
Virtual training intro to InfluxDB - June 2021
Virtual training  intro to InfluxDB  - June 2021Virtual training  intro to InfluxDB  - June 2021
Virtual training intro to InfluxDB - June 2021InfluxData
 
Oracle E-Business Suite On Oracle Cloud
Oracle E-Business Suite On Oracle CloudOracle E-Business Suite On Oracle Cloud
Oracle E-Business Suite On Oracle Cloudpasalapudi
 
Master IAM in the Cloud with SCIM v2.0
Master IAM in the Cloud with SCIM v2.0Master IAM in the Cloud with SCIM v2.0
Master IAM in the Cloud with SCIM v2.0Kelly Grizzle
 
DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)Gerardo Pardo-Castellote
 

Similar to DDS tutorial with connector (20)

Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017
 
2017 Microservices Practitioner Virtual Summit: Ancestry's Journey towards Mi...
2017 Microservices Practitioner Virtual Summit: Ancestry's Journey towards Mi...2017 Microservices Practitioner Virtual Summit: Ancestry's Journey towards Mi...
2017 Microservices Practitioner Virtual Summit: Ancestry's Journey towards Mi...
 
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
 
Fiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPSFiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPS
 
The Rise of DataOps: Making Big Data Bite Size with DataOps
The Rise of DataOps: Making Big Data Bite Size with DataOpsThe Rise of DataOps: Making Big Data Bite Size with DataOps
The Rise of DataOps: Making Big Data Bite Size with DataOps
 
Docker Usage Patterns - Meetup Docker Paris - November, 10th 2015
Docker Usage Patterns - Meetup Docker Paris - November, 10th 2015Docker Usage Patterns - Meetup Docker Paris - November, 10th 2015
Docker Usage Patterns - Meetup Docker Paris - November, 10th 2015
 
Mapping the RESTful Programming Model to the DDS Data-Centric Model
Mapping the RESTful Programming Model to the DDS Data-Centric ModelMapping the RESTful Programming Model to the DDS Data-Centric Model
Mapping the RESTful Programming Model to the DDS Data-Centric Model
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applications
 
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
 
Cortex: Horizontally Scalable, Highly Available Prometheus
Cortex: Horizontally Scalable, Highly Available PrometheusCortex: Horizontally Scalable, Highly Available Prometheus
Cortex: Horizontally Scalable, Highly Available Prometheus
 
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
 
Fiware: Connecting to robots
Fiware: Connecting to robotsFiware: Connecting to robots
Fiware: Connecting to robots
 
OpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part IIOpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part II
 
Estimating the Total Costs of Your Cloud Analytics Platform
Estimating the Total Costs of Your Cloud Analytics PlatformEstimating the Total Costs of Your Cloud Analytics Platform
Estimating the Total Costs of Your Cloud Analytics Platform
 
Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...
Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...
Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...
 
Virtual training intro to InfluxDB - June 2021
Virtual training  intro to InfluxDB  - June 2021Virtual training  intro to InfluxDB  - June 2021
Virtual training intro to InfluxDB - June 2021
 
Kubernetes basics and hands on exercise
Kubernetes basics and hands on exerciseKubernetes basics and hands on exercise
Kubernetes basics and hands on exercise
 
Oracle E-Business Suite On Oracle Cloud
Oracle E-Business Suite On Oracle CloudOracle E-Business Suite On Oracle Cloud
Oracle E-Business Suite On Oracle Cloud
 
Master IAM in the Cloud with SCIM v2.0
Master IAM in the Cloud with SCIM v2.0Master IAM in the Cloud with SCIM v2.0
Master IAM in the Cloud with SCIM v2.0
 
DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)
 

Recently uploaded

A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROmotivationalword821
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 

Recently uploaded (20)

A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTRO
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 

DDS tutorial with connector

  • 1. ©2017 Real-Time Innovations, Inc. Tutorial: DDS first steps with Connector Javier Povedano, PhD. javier@rti.com Real-Time Innovations Inc.
  • 2. ©2017 Real-Time Innovations, Inc. Agenda • DDS • Connector • Setup your environment • Hands On! – Publishing/Subscribing to Data – Data Filtering – High-Availability – Late joiners – Partitions
  • 3. ©2017 Real-Time Innovations, Inc. DDS Shapes Demo https://www.rti.com/downloads/shapes-demo
  • 4. ©2017 Real-Time Innovations, Inc. What is Connector? • Simple API for Data-Centric Publish/Subscribe – Built on top of DDS – Very few methods – Experimental • Scripting language bindings – node.js, python, nodered • Prototyping – Entities and QoS configured by XML
  • 5. ©2017 Real-Time Innovations, Inc. 2016 © Real-Time Innovations Inc. Classical DDS Workflow IDL/XML struct Position2D { long id; //@key double x; double y; }; Code Generation struct Temp { long id; //@key double value; }; struct Temp { long id; //@key double value; }; #include <...> define Position2D; Pos2DWriter::write Pos2DReader::read C/C++/Java/C# <xml QoS> QoS Settings Type Definition Code ready to be built in +50 architectures: Linux, Windows, VxWorks, Integrity…. This process can be simplified even more: RTI Prototyper/Connector
  • 6. ©2017 Real-Time Innovations, Inc. Connector Workflow Python/Lua/NodeJS Interpreter <xml QoS> <types> <scenario description> Python/Lua/NodeJS script
  • 7. ©2017 Real-Time Innovations, Inc. Input Data Port (DataReader+)Output Data Port (DataWriter+) DDS Connector Input & Output ports Connector (DomainParticipant+) output() write() / dispose() / unregister() clear_members() instance input() wait() / on() read() / take() samples[] config.xml User Defined Structure XML Config
  • 8. ©2017 Real-Time Innovations, Inc. 2016 © Real-Time Innovations Inc. Anatomy of a Publisher in Connector 1. connector = rti.Connector("MyParticipantLibrary::Sensor",'Tutorial.xml') 2. writer = connector.getOutput("TempPublisher::TempWriter") 3. writer.instance.setString('id', sensor.id) 4. writer.write() 1. Create a connector 2. Get the DataWriter 3. Set the instance values 4. Write the value
  • 9. ©2017 Real-Time Innovations, Inc. 2016 © Real-Time Innovations Inc. Anatomy of a Subscriber in Connector 1. connector = rti.Connector("MyParticipantLibrary::Sensor", 'Tutorial.xml') 2. reader = connector.getInput("TempPublisher::TempWriter") 3. reader.read() 4. for i in nsamples: if reader.infos.isvalid(i) sample = reader.samples.getDictionary(i) 1. Create a connector 2. Get the datareader 3. Read/Take the value 4. Iterate for all the samples a. if is valid i. get the sample
  • 10. ©2017 Real-Time Innovations, Inc. Setup Installing the tutorial > git clone https://github.com/jpovedano/dds-firststeps > ./setup In each terminal: > . rticonnectenv/bin/activate
  • 11. ©2017 Real-Time Innovations, Inc. Let's Rock! Hands On Exercise
  • 12. ©2017 Real-Time Innovations, Inc. About the examples • Temperature sensor scenario – Sensors (publishers) • Publish temperature data every second – Console (suscribers) • Shows a table with data being published • Configured by XML – Tutorial.xml • Define the DDS entities and their QoS settings struct Sensor { string id; //@key long value; long timestamp; };
  • 13. ©2017 Real-Time Innovations, Inc. Anatomy of the XML 1. QoS Library a. QoS Settings 2. Types a. Type Definition 3. Domain Library a. Domains and Topics 4. Participant Library a. DDS Entities hierarchy <!-- Qos Library --> <qos_library name="QosLibrary"> <qos_profile name="DefaultProfile" is_default_qos="true"> <participant_qos> <transport_builtin> <!-- <mask>UDPV4 | SHMEM</mask>--> <mask> SHMEM</mask> </transport_builtin> </participant_qos> <datareader_qos> <!-- Modify reader values here --> </datareader_qos> </qos_profile> </qos_library>
  • 14. ©2017 Real-Time Innovations, Inc. Anatomy of the XML 1. QoS Library a. QoS Settings 2. Types a. Type Definition 3. Domain Library a. Domains and Topics 4. Participant Library a. DDS Entities hierarchy <types> <struct name="Sensor" extensibility="extensible"> <member name="id" stringMaxLength="128" id="0" type="string" key="true"/> <member name="value" id="1" type="long"/> <member name="timestamp" id="2" type="long"/> </struct> </types>
  • 15. ©2017 Real-Time Innovations, Inc. Anatomy of the XML 1. QoS Library a. QoS Settings 2. Types a. Type Definition 3. Domain Library a. Domains and Topics 4. Participant Library a. DDS Entities hierarchy <!-- Domain Library --> <domain_library name="MyDomainLibrary"> <domain name="MyDomain" domain_id="0"> <register_type name="Sensor" kind="dynamicData" type_ref="Sensor"/> <topic name="Temperature" register_type_ref="Sensor"/> </domain> </domain_library>
  • 16. ©2017 Real-Time Innovations, Inc. Anatomy of the XML 1. QoS Library a. QoS Settings 2. Types a. Type Definition 3. Domain Library a. Domains and Topics 4. Participant Library a. DDS Entities hierarchy <!-- Participant library --> <participant_library name="MyParticipantLibrary"> <domain_participant name="Console" domain_ref="MyDomainLibrary::MyDomain"> <subscriber name="TempSubscriber"> <data_reader name="TempReader" topic_ref="Temperature"/> </subscriber> </domain_participant> <domain_participant name="Sensor" domain_ref="MyDomainLibrary::MyDomain"> <publisher name="TempPublisher"> <data_writer name="TempWriter" topic_ref="Temperature"/> </publisher> </domain_participant> </participant_library>
  • 17. ©2017 Real-Time Innovations, Inc. Example 1: Basic pub/sub • Goal – In this example we show how to publish data – Learn differences between read/take – Learn how to change QoS settings in Connector • Documentation: – QoS Policy Reference Guide (cheat-sheet)
  • 18. ©2017 Real-Time Innovations, Inc. Example 2: Filtering • Goal – Learn how to filter data per subscriber • Description – The console application will only receive the data matching a certain criteria • Two types of Filtering: – Content Based • Use a filter with SQL Expression – Time Based • time_based_filter QoS
  • 19. ©2017 Real-Time Innovations, Inc. Example 3: High availability • Goal – Learn how to add robustness using DDS QoS • Description – Adding a backup sensor that substitute the primary sensor in case of failure • QoS: – Liveliness – Ownership – Ownership strength
  • 20. ©2017 Real-Time Innovations, Inc. Example 4: Durability • Goal – Learn how to provide recent history to late joiners • Description – A console application will receive the recent history published before it was started • QoS: – Durability QoS
  • 21. ©2017 Real-Time Innovations, Inc. Example 5: Data Isolation/Partition • Goal – Learn how to isolate publishers and subscribers within the same domain • Description – A console application will receive sensor updates only for subscribers in certain zones • QoS: – Partition QoS
  • 22. ©2017 Real-Time Innovations, Inc. Example 6 • Goal – create your own distributed application and share it with the community • Description – Let your imagination fly! • References – XML Application creation