SlideShare une entreprise Scribd logo
1  sur  78
Télécharger pour lire hors ligne
Angelo Corsaro, Ph.D.
Chief Technology Officer
PrismTech
OMG DDS SIG Co-Chair
angelo.corsaro@prismtech.com
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Getting Started with DDS
For C++ and Java Programmers
1
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./background-info
2
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
The OMG DDS
The OMG DDS Standard
‣ Introduced in 2004 to address the Data
distribution challenges typical of Defense
and Aerospace Mission Critical Applications
‣ Key requirements for the standard were high
performance and scalability from embedded
to ultra-large-scale deployments
‣ Today recommended by key administrations
worldwide and widely adopted well beyond
Aerospace and Defense in domains, such as,
Automated Trading, Simulations, SCADA,
Telemetry, etc.
3
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DDS Recommendations
Increasingly Mandated/Recommended by Administrations
‣ US Navy: Open Architecture
‣ DISR/DISA: Net-centric Systems
‣ EuroControl: Air Traffic Control Center Operational
Interoperability
‣ QinetiQ & MILVA: Recommending DDS for Vehicles
Electronic Architecture
! The infrastructure evolution cycle is churning…
– New -> Emerging -> Standard -> Commodity
– Middleware is emerging as OS declines
! …DDS is maturing…
– OMG focus
– Wire spec
– Tools
– Enterprise integration
– Multiple products fielded
– Deployed applications!
! …and adoption is on the rise
– Navy
– DISR
– FCS/SoSCOE
– Many significant applications 4
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
The OMG Data Distribution Service
DDS v1.2 API Standard
‣ Language Independent, OS and
HW architecture independent
‣ DCPS. Standard API for Data-
Centric, Topic-Based, Real-Time
Publish/Subscribe
‣ DLRL. Standard API for creating
Object Views out of collection of
Topics
Object/Relational Mapping
Ownership Durability
Content
Subscription
Minimum Profile
Data Centric Publish/Subscribe (DCPS)
Data Local Reconstruction Layer (DLRL)
DDS Interoperability Wire Protocol
Application
UDP/IP
Real-Time Publish/Subscribe Protocol
5
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
The OMG Data Distribution Service
DDS v1.2 API Standard
‣ Language Independent, OS and
HW architecture independent
‣ DCPS. Standard API for Data-
Centric, Topic-Based, Real-Time
Publish/Subscribe
‣ DLRL. Standard API for creating
Object Views out of collection of
Topics
Object/Relational Mapping
Ownership Durability
Content
Subscription
Minimum Profile
Data Centric Publish/Subscribe (DCPS)
Data Local Reconstruction Layer (DLRL)
DDS Interoperability Wire Protocol
Application
UDP/IP
Real-Time Publish/Subscribe Protocol
5
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
The OMG Data Distribution Service
DDS-RTPS v2.1 Wire Protocol
Standard
‣ Standard wire protocol allowing
interoperability between different
implementations of the DDS
standard
‣ Interoperability demonstrated
among key DDS vendors in March
2009
Object/Relational Mapping
Ownership Durability
Content
Subscription
Minimum Profile
Data Centric Publish/Subscribe (DCPS)
Data Local Reconstruction Layer (DLRL)
DDS Interoperability Wire Protocol
Application
UDP/IP
Real-Time Publish/Subscribe Protocol
6
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./dds-foundations
7
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
What is Data Distribution?
‣ Data distribution is about
making application defined
data available where needed
and when needed
‣ Data is a first class concept,
it can be created, updated,
read and eventually disposed
‣ The last value (or last N-
values) of a Data is available
VehicleSpeedVehicleSpeedVehicleSpeed
plate
“A123”
“B456”
“C789”
dx dy
50 0
0 45
10 30
VehiclePositionVehiclePositionVehiclePosition
plate
“A123”
“B456”
“C789”
x y
101 202
303 404
505 606
[1/2]
TrakCo.VehiclePosition
struct VehiclePosition {
string plate;
long x, y; }
TrakCo.VehicleSpeed
struct VehicleSpeed {
string plate;
long dx, dy; }
Brokers
8
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
What is Data Distribution?
‣ Producer, Consumers as well
as Topics are dynamically
discovered
‣ A rich set of QoS is used to
control the non-functional
properties of data (e.g.
durability, availability, etc.)
[2/2]
TrakCo.VehiclePosition
struct VehiclePosition {
string plate;
long x, y; }
TrakCo.VehicleSpeed
struct VehicleSpeed {
string plate;
long dx, dy; }
VehicleSpeedVehicleSpeedVehicleSpeed
plate
“A123”
“B456”
“C789”
dx dy
50 0
0 45
10 30
VehiclePositionVehiclePositionVehiclePosition
plate
“A123”
“B456”
“C789”
x y
101 202
303 404
505 606
Brokers
9
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./dds-topics
10
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Data in DDS
‣ The definition of Data in DDS is tied
to the definition of a Topic
‣ A Topic is the association between:
‣ Unique Name
‣ Type
‣ QoS
‣ A Topic can have associated a key
in order to express data instances
identities
VehiclePosition
TrackCo.VehiclePosition
{
Reliability
Deadline,
Priority
Transient,
...
}
TopicType QoS
Name
[1/2]
Topics
11
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Data in DDS
‣ A Topic key can be made of an
arbitrary number of Topic Type
attributes
‣ Each unique key value identify a
Topic Instance
‣ Topic Instance, can be Created,
Read, Updated, and Disposed
(CRUD)
[2/2]
VehiclePositionVehiclePositionVehiclePosition
plate
“A123”
“B456”
“C789”
x y
101 202
303 202
101 606
TrakCo.VehiclePositionTopic
TopicType
Topic Instances
Topic Key
Topic Instances
12
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./qos
13
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DDS QoS Model
Publisher
DataWriter
Topic
Type
QoS
Name
writes
QoS
DataWriter
Topic
Typewrites
Subscriber
DataReaderreads
DataReaderreads
...
QoS
Name
QoS
QoS QoS
QoS matching
......
QoS QoS
Type Matching
DomainParticipant DomainParticipant
QoS QoS
‣ QoS-Policies provide
control over local and
end-to-end properties of
DDS entities
‣ Local properties
controlled by QoS are
related resource usage
‣ End-to-end properties controlled by QoS are related to temporal and spatial aspects
of data distribution
‣ Some QoS-Policies are matched based on a Request vs. Offered Model thus QoS-
enforcement
14
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
QoS Policy Applicabilit
y
RxO Modifiable
DURABILITY
DURABILITY
SERVICE
LIFESPAN
HISTORY
PRESENTATION
RELIABILITY
PARTITION
DESTINATION
ORDER
OWNERSHIP
OWNERSHIP
STRENGTH
DEADLINE
LATENCY
BUDGET
TRANSPORT
PRIORITY
T, DR, DW Y N
Data
Availability
T, DW N N
Data
Availability
T, DW N/A Y
Data
Availability
T, DR, DW N N
Data
Availability
P, S Y N
Data
Delivery
T, DR, DW Y N
Data
Delivery
P, S N Y
Data
Delivery
T, DR, DW Y N
Data
Delivery
T, DR, DW Y N
Data
Delivery
DW N/A Y
Data
Delivery
T, DR, DW Y Y
Data
Timeliness
T, DR, DW Y Y
Data
Timeliness
T, DW N/A Y
Data
Timeliness
TIME BASED
FILTER
RESOURCE
LIMITS
ENTITY
FACTORY
USER DATA
TOPIC DATA
GROUP DATA
LIVELINESS
WRITER DATA
LIFECYCLE
READER DATA
LIFECYCLE
DR N/A Y
Resources
T, DR, DW N N
Resources
Configuratio
n
DP, DR, DW N Y Configuratio
nT N Y
Configuratio
n
P, S N Y
Configuratio
n
T, DR, DW Y N
Configuratio
n
DW N/A Y
Lifecycle
DR N/A Y
Lifecycle
QoS Policy Applicability RxO Modifiable
QoS Policies
15
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./dds-in-action
16
Brokers
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Data Distribution in Action
17
Brokers
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Data Distribution in Action
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
VehiclePositionVehiclePositionVehiclePosition
plate x y
17
Brokers
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
VehiclePositionVehiclePositionVehiclePosition
plate x y
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Data Distribution in Action
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehiclePositionVehiclePositionVehiclePosition
plate x y
18
Brokers
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
VehiclePositionVehiclePositionVehiclePosition
plate x y
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Data Distribution in Action
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
“A123” 101 202
“A123” 101 202
“A123” 101 202
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehiclePositionVehiclePositionVehiclePosition
plate x y
18
Brokers
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
VehiclePositionVehiclePositionVehiclePosition
plate x y
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Data Distribution in Action
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
“A123” 101 202
“A123” 101 202
“A123” 101 202
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehiclePositionVehiclePositionVehiclePosition
plate x y
“B456” 303 404
“B456” 303 404
“B456” 303 404
VehiclePositionVehiclePositionVehiclePosition
plate x y
18
VehiclePositionVehiclePositionVehiclePosition
plate x y
“A123” 101 202
“B456” 303 404
Brokers
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
VehiclePositionVehiclePositionVehiclePosition
plate x y
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Data Distribution in Action
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
“A123” 101 202“A123” 101 202
VehiclePositionVehiclePositionVehiclePosition
plate x y
“B456” 303 404“B456” 303 404
VehiclePositionVehiclePositionVehiclePosition
plate x y
“A123” 101 202
“B456” 303 404
19
VehiclePositionVehiclePositionVehiclePosition
plate x y
“A123” 101 202
“B456” 303 404
Brokers
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
VehiclePositionVehiclePositionVehiclePosition
plate x y
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Data Distribution in Action
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
“A123” 101 202“A123” 101 202
VehiclePositionVehiclePositionVehiclePosition
plate x y
“B456” 303 404“B456” 303 404
VehiclePositionVehiclePositionVehiclePosition
plate x y
“C789” 505 606
“C789” 505 606
“C789” 505 606
“A123” 101 202
“B456” 303 404
19
VehiclePositionVehiclePositionVehiclePosition
plate x y
“A123” 101 202
“B456” 303 404
Brokers
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
VehiclePositionVehiclePositionVehiclePosition
plate x y
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Data Distribution in Action
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
“A123” 101 202“A123” 101 202
VehiclePositionVehiclePositionVehiclePosition
plate x y
“B456” 303 404“B456” 303 404
VehiclePositionVehiclePositionVehiclePosition
plate x y
“C789” 505 606“C789” 505 606
“A123” 101 202
“B456” 303 404
“C789” 505 606
“C789” 505 606
20
VehiclePositionVehiclePositionVehiclePosition
plate x y
“A123” 101 202
“B456” 303 404
Brokers
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
VehiclePositionVehiclePositionVehiclePosition
plate x y
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Data Distribution in Action
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
“A123” 101 202“A123” 101 202
VehiclePositionVehiclePositionVehiclePosition
plate x y
“B456” 303 404“B456” 303 404
VehiclePositionVehiclePositionVehiclePosition
plate x y
“C789” 505 606“C789” 505 606
“A123” 101 202
“B456” 303 404
“C789” 505 606
“C789” 505 606
“A123” 50 0
20
VehiclePositionVehiclePositionVehiclePosition
plate x y
“A123” 101 202
“B456” 303 404
Brokers
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
VehiclePositionVehiclePositionVehiclePosition
plate x y
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Data Distribution in Action
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
“A123” 101 202“A123” 101 202
VehiclePositionVehiclePositionVehiclePosition
plate x y
“B456” 303 404“B456” 303 404
VehiclePositionVehiclePositionVehiclePosition
plate x y
“C789” 505 606“C789” 505 606
“A123” 101 202
“B456” 303 404
“C789” 505 606
“C789” 505 606
“A123” 50 0
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
21
VehiclePositionVehiclePositionVehiclePosition
plate x y
“A123” 101 202
“B456” 303 404
Brokers
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
VehiclePositionVehiclePositionVehiclePosition
plate x y
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Data Distribution in Action
VehiclePositionVehiclePositionVehiclePosition
plate x y
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
“A123” 101 202“A123” 101 202
VehiclePositionVehiclePositionVehiclePosition
plate x y
“B456” 303 404“B456” 303 404
VehiclePositionVehiclePositionVehiclePosition
plate x y
“C789” 505 606“C789” 505 606
“A123” 101 202
“B456” 303 404
“C789” 505 606
“C789” 505 606
“A123” 50 0
“A123” 50 0
VehicleSpeedVehicleSpeedVehicleSpeed
plate dx dy
21
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./cxx-java-psm
22
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DDS PIM/PSM Approach
‣ The DDS standard is composed
by a PIM specified in UML and
A PSM specified in IDL
‣ Language specific APIs are
derived via IDL-based mappings
(e.g. IDL2C++, etc.)
PIM (UML)
PSM (IDL)
C JavaC++
IDL2C
IDL2C++
IDL2Java
23
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
What is the problem?
‣ IDL is very good for describing DDS Topic Types, yet...
‣ IDL’s biggest strength, namely (programming) language
independence, becomes its biggest weakness when trying to
define APIs that are well integrated with a programming
language
‣ For some programming languages (e.g. C++) the IDL2C++
mapping is “seasoned”
24
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Why is this a problem?
‣ Resulting DDS APIs are more complicated than they should
‣ API don’t feel natural or ergonomic to programmers
‣ API (esp. for C++) don’t integrate well with standard libraries
nor implements common idioms/patterns.
25
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Native C++/Java PSMs
‣ The new C++/Java PSM are derived
starting directly from the PIM
‣ The new C++/Java PSM take
advantage of all the features
available in C++/Java to provide a
natural, productive, efficient, safe and
portable API
PIM (UML)
ISO C++ PSM
The new PSM simplify DDS programming w/o limiting the
expensiveness or introducing limitations in what possible
Java 5 PSM
26
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
ISO C++ PSM in a Nutshell
‣ Provides transparent, safe, precise and real-time automatic
memory management
‣ Takes advantage of C++ Template Meta-programming to
automate tasks such as type registration and provide a strongly
typed API (no downcast ever!)
‣ Provides a DDS API that exploits Iterators and containers as well
as other C++ Standard Types
‣ API is extensible, efficient and portable
27
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Java 5 PSM in a Nutshell
‣ Takes advantage of Java Generics to simplify the API and
facilitate tasks such as type registration
‣ Provides a DDS API that exploits Iterators and containers
‣ API is extensible, efficient and portable
28
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Anatomy of a DDS Application
‣ Tree-like dependency between
DP->(P,S)->(DR, DW) in creation
and life-cycle management
‣ Example: DW alive requires
the parent P to be alive
‣ This tree-like dependency
allows precise GC of DDS
Entities via reference counting
DomainParticipant
Publisher Subscriber
DataWriter DataReader
Topic
Partition
Domain
DP: DomainParticipant DR: DataReader
P: Publisher DW: DataWriter
S: Subscribe
29
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DDS App Steps
1. Define the Information Model1
30
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DDS App Steps
1. Define the Information Model
2. Connect to proper Domain/Partition
1
2
31
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DDS App Steps
1. Define the Information Model
2. Connect to proper Domain/Partition
3. Create Topic
1
2
3
32
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DDS App Steps
1. Define the Information Model
2. Connect to proper Domain/Partition
3. Create Topic
4. Create DataWriter
1
2
3
4
33
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DDS App Steps
1. Define the Information Model
2. Connect to proper Domain/Partition
3. Create Topic
4. Create DataWriter
5. Create DataReader
1
2
3
4
4
34
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DDS App Steps
1. Define the Information Model1
35
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./cxx
36
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Topics in C++
‣ Topic are associated to a C++ template class parametrized in the
topic type, e.g. Topic<VehiclePosition>, Topic<VehicleSpeed>
‣ Topic types can be described in IDL, XML, UML, and Java
‣ Topic types are mapped to C++ classes having one set of
accessors per Topic attribute
37
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Types Mapping
‣ DDS primitive types are mapped to
C99/C++ standard types
‣ DDS container types are mapped to
standard C++ containers, namely
std::vector and std::map
38
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
TopicType Mapping
struct VehiclePosition {
! string plate;
! long x;
! long y;
};
#pragma keylist VehiclePosition plate
IDL Topic Type Definition
class VehiclePosition {
! VehiclePosition();
! VehiclePosition(const std::string& plate,
! ! ! int32_t x, int32_t y);
! virtual ~VehiclePosition();
! const std::string& plate() const;
! void plate(const std::string& s);
! const int32_t x() const;
! void x(int32_t i);
! const int32_t y() const;
! void y(int32_t i);
private:
! // Encapsulated state representation
};
C++ Topic Type Mapping
39
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./java
40
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Topics in Java
‣ Topic are associated to a Java Generic class parametrized in
the topic type, e.g. Topic<VehiclePosition>,
Topic<VehicleSpeed>
‣ Topic types can be described in IDL, XML, UML, and Java
‣ Topic types are mapped to Java classes having one set of
accessors per Topic attribute
‣ Properly annotated, user provided Java classes, can be used as
topic types w/o the need of code generation
41
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Types Mapping
‣ DDS primitive types are mapped to
Java primitive types
‣ DDS container types are mapped to
standard Java containers
DDS Type Java Type
Boolean boolean
Char8 char
Char32 int
Byte byte
Int16 short
UInt16 short
Int32 int
Uint32 int
Int64 long
Uint64 long
Float64 double
Float32 float
string<Char8> String
string<Char32> String
sequence<T> Collection
map<K,T> java.util.Map
T[] T[]
42
Java Topic Type Mapping
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
TopicType Mapping
class VehiclePosition {
public VehiclePosition() { /* impl */ }
public VehiclePosition(String plate,
! ! ! int x, int y) { /* impl */}
String getPlate() { /* impl */ }
void setPlate(String plate) { /* impl */ }
int getX() { /* impl */ }
void setX(int x) { /* impl */ }
int getY() { /* impl */ }
void setY(int y) { /* impl */ }
// Private state implementation
}
struct VehiclePosition {
! string plate;
! long x;
! long y;
};
#pragma keylist VehiclePosition plate
IDL Topic Type Definition
43
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
JavaTopicType Definition
class VehiclePosition {
@key
private string plate;
private int x;
private int y;
public VehiclePosition() { }
public VehiclePosition(String plate,
! ! ! int x, int y) {
this.plate = plate;
! this.x = x;
! this.y = y;
}
String getPlate() { return this.plate; }
void setPlate(String plate) {
this.plate = plate; }
int getX() { return this.x; }
void setX(int x) { this.x = x; }
int getY() { return this.y; }
void setY(int y) { this.y = y; }
}
44
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DDS App Steps
1. Define the Information Model
2. Connect to proper Domain/Partition
1
2
45
Domain
‣ A Domain is one instance of
the DDS Global Data Space
‣ DDS entities always belong
to a specific domain
Partition
‣ A partition is a scoping
mechanism provided by DDS
organize a partition
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DomainId = 0
VechicleTelemetry
Domain and Partitions
46
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./cxx
47
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Joining Domain/Partition
Note:
‣ Reference types are
always created via
factory methods on
the parent entity
‣ Policies can be
“streamed” into QoS
objects
// Create Domain Participant in the Domain “0”
DomainId id = 0;
DomainParticipant dp =
TheParticipantFactory().create_participant(id);
// Set the Publisher QoS with the proper partition
pub::qos::PublisherQos pqos;
pqos << policy::Partition("VehicleTelemetry");
// Create the Publisher
pub::Publisher pub =
dp.create_publisher(pqos);
using namespace dds::core;
using namespace dds;
using namespace dds::domain;
48
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./java
49
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Joining Domain/Partition
Note:
‣ The Boostrap class
allows to run multiple
DDS instances, even
from different vendors
on the same
application
// Create Domain Participant in the Domain “0”
DomainId id = 0;
DomainParticipantFactory factory =
! ! DomainParticipantFactory.getInstance
(Bootstrap.createInstance());
DomainParticipant dp =
factory.createParticipant(id);
// Create the Publisher
pub::Publisher pub =
dp.create_publisher(pqos);
import org.omg.dds.core.Bootstrap;
import org.omg.dds.domain.DomainParticipant;
import org.omg.dds.domain.DomainParticipantFactory;
50
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DDS App Steps
1. Define the Information Model
2. Connect to proper Domain/Partition
3. Create Topic
1
2
3
51
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./cxx
52
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Topic Creation
Note:
‣ QoS setting is
optional and only
required to override
defaults
‣ QoS override shown
to highlight how
effective is the new
QoS API
// Create and set TopicQos (if different from
// default)
topic::qos::TopicQos tqos;
tqos << policy::Reliability::Reliable()
<< policy::Durability::Transient()
<< policy::History::KeepLast(10)
<< policy::TransportPriority(14);
// Create the Topic with specific Qos
topic::Topic<VehiclePosition> topic =
dp.create_topic<VehiclePosition>("VPosTopic", tqos);
using namespace dds;
// Create the Topic with default Qos
topic::Topic<VehiclePosition> topic =
dp.create_topic<VehiclePosition>("VPosTopic");
53
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./java
54
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Topic Creation
Note:
‣ The TopicType class
is passed to work-
around Java
Generics type-
erasure
import org.omg.dds.topic.Topic;
// Create the Topic with default Qos
Topic<VehiclePosition> topic =
dp.createTopic("VPosTopic", VehiclePosition.class);
55
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DDS App Steps
1. Define the Information Model
2. Connect to proper Domain/Partition
3. Create Topic
4. Create DataWriter
1
2
3
4
56
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./cxx
57
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Writing Data
Note:
‣ The DataWriter is
parametrized on the
Topic Type
‣ The stream operator
can be used to
write sample as well
as override Qos,
policies and to do
coherent updates
// Create and set DataWriterQos from TopicQos
pub::qos::DataWriterQos dwqos(tqos);
// Create DataWriter
pub::DataWriter<VehiclePosition> dw =
pub.create_datawriter(topic, dwqos);
// Create Sample
VehiclePosition vpos("A123", 100, 200);
// Write
dw.write(vpos);
// Stream-like Write
dw << vpos;
// Stream-like Write + Policy override
dw << policy::TransportPriority(55) << vpos;
using namespace dds::core;
using namespace dds;
58
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./java
59
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Writing Data
Note:
‣ No need to pass
the class type since
it is maintained by
the Topic
import org.omg.dds.pub.DataWriter;
// Create the Topic with default Qos
DataWriter<VehiclePosition> dw =
pub.createDataWriter(topic);
// Create Sample
VehiclePosition vp =
new VehiclePosition("A123", 100, 200);
// Write Sample
dw.write(vp);
60
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
DDS App Steps
1. Define the Information Model
2. Connect to proper Domain/Partition
3. Create Topic
4. Create DataWriter
5. Create DataReader
1
2
3
4
4
61
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./cxx
62
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Reading Data
Note:
‣ The read API is heavily
based on iterators
‣ The stream operator can
also be used read
samples and a mutator is
used to control the
read/take behaviour
‣ Back-inserting iterators
and zero-copy API also
supported
// (1) Create and set DataReaderQos from TopicQos
sub::qos::DataReaderQos drqos(tqos);
// (2) Create DataReader
sub::DataReader<VehiclePosition> dr =
sub.create_datareader(topic, drqos);
// (3) Read with using Forward Iterators on std::vector
std::vector<VehiclePosition> data(N);
std::vector<SampleInfo> info(N);
dr.read(data.begin(), info.begin(), N);
// (3) Read with using Forward Iterators on arrays
VehiclePosition adata[N];
SampleInfo ainfo[N];
dr.read(&adata[0], &ainfo[0], N);
using namespace dds::core;
using namespace dds;
63
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./java
64
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Reading Data
Note:
‣ No need to pass
the class type since
it is maintained by
the Topic
import org.omg.dds.pub.DataReader;
// Create the Topic with default Qos
DataReader <VehiclePosition> dr =
sub.createDataReader(topic);
List<Sample<VehiclePosition>> data =
new Vector<Sample<VehiclePosition>>();
dr.read(data);
65
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Putting all together
int main(int, char**) {
// -- Create Domain Participant
DomainParticipant dp =
! ! TheParticipantFactory().create_participant();
// -- Create Publisher
pub::Publisher pub = dp.create_publisher();
// -- Create Topic
dds::topic::Topic<VehiclePosition> topic =
! ! dp.create_topic<VehiclePosition>("VSPosTopic");
// -- Create DataWriter
pub::DataWriter<VehiclePosition> dw =
! ! ! pub.create_datawriter(topic);
// -- Write Sample
dw << VehiclePosition("A123", 100, 200);
}
‣ Writing a DDS can take as
5 lines of code
‣ Default domain
‣ Default Qos
66
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./summ-up
67
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
Concluding Remarks
‣ DDS provide a powerful abstraction for building high available,
scalable and high performance distributed systems
‣ The new C++ and Java API make DDS very simple to use while
improving safety, performances and portability
‣ These new API are now finalized and planned for adoption
during the December 2010 OMG meeting
68
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
./references
69
OpenSpliceDDSOpenSpliceDDOpenSpliceDDSOpenSpliceDDSOpenSpliceDDS
References
‣ Working incubator from which most of
the ISO C++ PSM was derived
‣ Available at:
‣ http://code.google.com/p/simd-cxx
The Simple DDS API
SimD
‣ OMG submission for C++/Java PSM are also available as Open
Source project at the following URL
‣ http://code.google.com/p/dds-psm-cxx/
‣ http://code.google.com/p/datadistrib4j/
70
http://www.opensplice.com/
http://www.opensplice.org/
emailto:opensplicedds@prismtech.com
http://www.youtube.com/OpenSpliceTube http://opensplice.blogspot.com
http://bit.ly/1Sreg
http://www.slideshare.net/angelo.corsaro
http://twitter.com/acorsaro/
D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m
OpenSplice DDS
References
71

Contenu connexe

Tendances

Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS Applications
Angelo Corsaro
 
Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++
Sumant Tambe
 

Tendances (20)

DDS Best Practices
DDS Best PracticesDDS Best Practices
DDS Best Practices
 
DDS Tutorial -- Part I
DDS Tutorial -- Part IDDS Tutorial -- Part I
DDS Tutorial -- Part I
 
The Art and Science of DDS Data Modelling
The Art and Science of DDS Data ModellingThe Art and Science of DDS Data Modelling
The Art and Science of DDS Data Modelling
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS Applications
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
 
DDS Secure Intro
DDS Secure IntroDDS Secure Intro
DDS Secure Intro
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security Standard
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDS
 
Best Practices Using RTI Connext DDS
Best Practices Using RTI Connext DDSBest Practices Using RTI Connext DDS
Best Practices Using RTI Connext DDS
 
RTI DDS Intro with DDS Secure
RTI DDS Intro with DDS SecureRTI DDS Intro with DDS Secure
RTI DDS Intro with DDS Secure
 
RTI Data-Distribution Service (DDS) Master Class 2011
RTI Data-Distribution Service (DDS) Master Class 2011RTI Data-Distribution Service (DDS) Master Class 2011
RTI Data-Distribution Service (DDS) Master Class 2011
 
Overview of the DDS-XRCE specification
Overview of the DDS-XRCE specificationOverview of the DDS-XRCE specification
Overview of the DDS-XRCE specification
 
10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS
 
Micro services Architecture with Vortex -- Part I
Micro services Architecture with Vortex -- Part IMicro services Architecture with Vortex -- Part I
Micro services Architecture with Vortex -- Part I
 
Introduction to RTI DDS
Introduction to RTI DDSIntroduction to RTI DDS
Introduction to RTI DDS
 
DDS In Action Part II
DDS In Action Part IIDDS In Action Part II
DDS In Action Part II
 
20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies
 
DDS Over Low Bandwidth Data Links
DDS Over Low Bandwidth Data LinksDDS Over Low Bandwidth Data Links
DDS Over Low Bandwidth Data Links
 
Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++
 
Micro XRCE-DDS: Bringing DDS into microcontrollers
Micro XRCE-DDS: Bringing DDS into microcontrollersMicro XRCE-DDS: Bringing DDS into microcontrollers
Micro XRCE-DDS: Bringing DDS into microcontrollers
 

En vedette

Getting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaGetting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and Scala
Angelo Corsaro
 
Test 2 Polymer Notes
Test 2 Polymer NotesTest 2 Polymer Notes
Test 2 Polymer Notes
sad asad
 

En vedette (20)

The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex Café
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part I
 
Vortex Tutorial Part II
Vortex Tutorial Part IIVortex Tutorial Part II
Vortex Tutorial Part II
 
Advanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAdvanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part I
 
Stream Processing with DDS and CEP
Stream Processing with  DDS and CEPStream Processing with  DDS and CEP
Stream Processing with DDS and CEP
 
Building Real-Time Web Applications with Vortex-Web
Building Real-Time Web Applications with Vortex-WebBuilding Real-Time Web Applications with Vortex-Web
Building Real-Time Web Applications with Vortex-Web
 
Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part II
 
Getting Started with OpenSplice DDS Community Ed.
Getting Started with OpenSplice DDS Community Ed.Getting Started with OpenSplice DDS Community Ed.
Getting Started with OpenSplice DDS Community Ed.
 
Connected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with VortexConnected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with Vortex
 
OpenSplice DDS v6
OpenSplice DDS v6OpenSplice DDS v6
OpenSplice DDS v6
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with Vortex
 
Building Reactive Applications with DDS
Building Reactive Applications with DDSBuilding Reactive Applications with DDS
Building Reactive Applications with DDS
 
The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part II
 
Introducing Vortex Lite
Introducing Vortex LiteIntroducing Vortex Lite
Introducing Vortex Lite
 
Building and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex CloudBuilding and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex Cloud
 
Getting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaGetting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and Scala
 
Concierge: Bringing OSGi (Back) to Embedded Devices
Concierge: Bringing OSGi (Back) to Embedded DevicesConcierge: Bringing OSGi (Back) to Embedded Devices
Concierge: Bringing OSGi (Back) to Embedded Devices
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming Ruminations
 
Test 2 Polymer Notes
Test 2 Polymer NotesTest 2 Polymer Notes
Test 2 Polymer Notes
 

Similaire à Getting Started in DDS with C++ and Java

Interoperable DDS Strategies
Interoperable DDS StrategiesInteroperable DDS Strategies
Interoperable DDS Strategies
Twin Oaks Computing, Inc.
 
onos-day-dkim-20150914-lkin
onos-day-dkim-20150914-lkinonos-day-dkim-20150914-lkin
onos-day-dkim-20150914-lkin
Dongkyun Kim
 
RCA OCORA: Safe Computing Platform using open standards
RCA OCORA: Safe Computing Platform using open standardsRCA OCORA: Safe Computing Platform using open standards
RCA OCORA: Safe Computing Platform using open standards
AdaCore
 

Similaire à Getting Started in DDS with C++ and Java (20)

Tweeting with OpenSplice DDS
Tweeting with OpenSplice DDSTweeting with OpenSplice DDS
Tweeting with OpenSplice DDS
 
Cloudand Xchange
Cloudand XchangeCloudand Xchange
Cloudand Xchange
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDS
 
A Gentle Introduction to OpenSplice DDS
A Gentle Introduction to OpenSplice DDSA Gentle Introduction to OpenSplice DDS
A Gentle Introduction to OpenSplice DDS
 
Interoperable DDS Strategies
Interoperable DDS StrategiesInteroperable DDS Strategies
Interoperable DDS Strategies
 
Strategies for migration to public cloud
Strategies for migration to public cloudStrategies for migration to public cloud
Strategies for migration to public cloud
 
onos-day-dkim-20150914-lkin
onos-day-dkim-20150914-lkinonos-day-dkim-20150914-lkin
onos-day-dkim-20150914-lkin
 
DDS and OPC UA Explained
DDS and OPC UA ExplainedDDS and OPC UA Explained
DDS and OPC UA Explained
 
MPLS/SDN 2013 Intercloud Standardization and Testbeds - Sill
MPLS/SDN 2013 Intercloud Standardization and Testbeds - SillMPLS/SDN 2013 Intercloud Standardization and Testbeds - Sill
MPLS/SDN 2013 Intercloud Standardization and Testbeds - Sill
 
How Autodesk Delivers Seamless Customer Experience with Catchpoint
How Autodesk Delivers Seamless Customer Experience with CatchpointHow Autodesk Delivers Seamless Customer Experience with Catchpoint
How Autodesk Delivers Seamless Customer Experience with Catchpoint
 
Beyond messaging
Beyond messagingBeyond messaging
Beyond messaging
 
DDS Enabling Open Architecture
DDS Enabling Open ArchitectureDDS Enabling Open Architecture
DDS Enabling Open Architecture
 
RCA OCORA: Safe Computing Platform using open standards
RCA OCORA: Safe Computing Platform using open standardsRCA OCORA: Safe Computing Platform using open standards
RCA OCORA: Safe Computing Platform using open standards
 
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
 
Fast RTPS
Fast RTPSFast RTPS
Fast RTPS
 
IRJET- A Survey on Remote Data Possession Verification Protocol in Cloud Storage
IRJET- A Survey on Remote Data Possession Verification Protocol in Cloud StorageIRJET- A Survey on Remote Data Possession Verification Protocol in Cloud Storage
IRJET- A Survey on Remote Data Possession Verification Protocol in Cloud Storage
 
Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.
 
Cloud Migration Strategy and Best Practices
Cloud Migration Strategy and Best PracticesCloud Migration Strategy and Best Practices
Cloud Migration Strategy and Best Practices
 
Vortex Tutorial Part 2
Vortex Tutorial Part 2Vortex Tutorial Part 2
Vortex Tutorial Part 2
 
The Path to SDN - How to Ensure a Successful SDN Evolution
The Path to SDN - How to Ensure a Successful SDN EvolutionThe Path to SDN - How to Ensure a Successful SDN Evolution
The Path to SDN - How to Ensure a Successful SDN Evolution
 

Plus de Angelo Corsaro

Plus de Angelo Corsaro (20)

Zenoh: The Genesis
Zenoh: The GenesisZenoh: The Genesis
Zenoh: The Genesis
 
zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data Fabric
 
Zenoh Tutorial
Zenoh TutorialZenoh Tutorial
Zenoh Tutorial
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query compute
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
 
Eastern Sicily
Eastern SicilyEastern Sicily
Eastern Sicily
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructure
 
Cyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeCyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT Age
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing Platform
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture Four
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture Three
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture Two
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture One
 
Data Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsData Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained Envionrments
 
Vortex II -- The Industrial IoT Connectivity Standard
Vortex II -- The  Industrial IoT  Connectivity StandardVortex II -- The  Industrial IoT  Connectivity Standard
Vortex II -- The Industrial IoT Connectivity Standard
 
Fog Computing Defined
Fog Computing DefinedFog Computing Defined
Fog Computing Defined
 
The Cloudy, Foggy and Misty Internet of Things -- Toward Fluid IoT Architect...
The Cloudy, Foggy and Misty Internet of Things --  Toward Fluid IoT Architect...The Cloudy, Foggy and Misty Internet of Things --  Toward Fluid IoT Architect...
The Cloudy, Foggy and Misty Internet of Things -- Toward Fluid IoT Architect...
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

Getting Started in DDS with C++ and Java