SlideShare a Scribd company logo
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

More Related Content

What's hot

The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
Angelo Corsaro
 
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
 
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
 
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
Angelo Corsaro
 
RTI DDS Intro with DDS Secure
RTI DDS Intro with DDS SecureRTI DDS Intro with DDS Secure
RTI DDS Intro with DDS Secure
John Breitenbach
 
10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS
Angelo Corsaro
 
Understanding Simware platform
Understanding Simware platformUnderstanding Simware platform
Understanding Simware platform
Simware
 
Complex Telco Networks as Simple Graphs
Complex Telco Networks as Simple GraphsComplex Telco Networks as Simple Graphs
Complex Telco Networks as Simple Graphs
Neo4j
 
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
Angelo Corsaro
 
Domain name system
Domain name systemDomain name system
Domain name system
Diwaker Pant
 
Graph database Use Cases
Graph database Use CasesGraph database Use Cases
Graph database Use Cases
Max De Marzi
 
Learning Series: RamSoft Gateway Router -'Yes we can do that'
Learning Series: RamSoft Gateway Router -'Yes we can do that'Learning Series: RamSoft Gateway Router -'Yes we can do that'
Learning Series: RamSoft Gateway Router -'Yes we can do that'
Ryan Furlough, BSCPE CPAS
 
OMG DDS Tutorial - Part I
OMG DDS Tutorial - Part IOMG DDS Tutorial - Part I
OMG DDS Tutorial - Part I
Angelo Corsaro
 
Using Knowledge Graphs to Predict Customer Needs and Improve Quality
Using Knowledge Graphs to Predict Customer Needs and Improve QualityUsing Knowledge Graphs to Predict Customer Needs and Improve Quality
Using Knowledge Graphs to Predict Customer Needs and Improve Quality
Neo4j
 
Transparent Encryption in HDFS
Transparent Encryption in HDFSTransparent Encryption in HDFS
Transparent Encryption in HDFS
DataWorks Summit
 
NOSQLEU - Graph Databases and Neo4j
NOSQLEU - Graph Databases and Neo4jNOSQLEU - Graph Databases and Neo4j
NOSQLEU - Graph Databases and Neo4j
Tobias Lindaaker
 
CICS basics overview session-1
CICS basics overview session-1CICS basics overview session-1
CICS basics overview session-1
Srinimf-Slides
 
Overview of the DDS-XRCE specification
Overview of the DDS-XRCE specificationOverview of the DDS-XRCE specification
Overview of the DDS-XRCE specification
Gerardo Pardo-Castellote
 
Object Storage 1: The Fundamentals of Objects and Object Storage
Object Storage 1: The Fundamentals of Objects and Object StorageObject Storage 1: The Fundamentals of Objects and Object Storage
Object Storage 1: The Fundamentals of Objects and Object Storage
Hitachi Vantara
 
Top ten big data security and privacy challenges
Top ten big data security and privacy challengesTop ten big data security and privacy challenges
Top ten big data security and privacy challenges
Bee_Ware
 

What's hot (20)

The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
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
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS Applications
 
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
 
RTI DDS Intro with DDS Secure
RTI DDS Intro with DDS SecureRTI DDS Intro with DDS Secure
RTI DDS Intro with DDS Secure
 
10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS
 
Understanding Simware platform
Understanding Simware platformUnderstanding Simware platform
Understanding Simware platform
 
Complex Telco Networks as Simple Graphs
Complex Telco Networks as Simple GraphsComplex Telco Networks as Simple Graphs
Complex Telco Networks as Simple Graphs
 
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
 
Domain name system
Domain name systemDomain name system
Domain name system
 
Graph database Use Cases
Graph database Use CasesGraph database Use Cases
Graph database Use Cases
 
Learning Series: RamSoft Gateway Router -'Yes we can do that'
Learning Series: RamSoft Gateway Router -'Yes we can do that'Learning Series: RamSoft Gateway Router -'Yes we can do that'
Learning Series: RamSoft Gateway Router -'Yes we can do that'
 
OMG DDS Tutorial - Part I
OMG DDS Tutorial - Part IOMG DDS Tutorial - Part I
OMG DDS Tutorial - Part I
 
Using Knowledge Graphs to Predict Customer Needs and Improve Quality
Using Knowledge Graphs to Predict Customer Needs and Improve QualityUsing Knowledge Graphs to Predict Customer Needs and Improve Quality
Using Knowledge Graphs to Predict Customer Needs and Improve Quality
 
Transparent Encryption in HDFS
Transparent Encryption in HDFSTransparent Encryption in HDFS
Transparent Encryption in HDFS
 
NOSQLEU - Graph Databases and Neo4j
NOSQLEU - Graph Databases and Neo4jNOSQLEU - Graph Databases and Neo4j
NOSQLEU - Graph Databases and Neo4j
 
CICS basics overview session-1
CICS basics overview session-1CICS basics overview session-1
CICS basics overview session-1
 
Overview of the DDS-XRCE specification
Overview of the DDS-XRCE specificationOverview of the DDS-XRCE specification
Overview of the DDS-XRCE specification
 
Object Storage 1: The Fundamentals of Objects and Object Storage
Object Storage 1: The Fundamentals of Objects and Object StorageObject Storage 1: The Fundamentals of Objects and Object Storage
Object Storage 1: The Fundamentals of Objects and Object Storage
 
Top ten big data security and privacy challenges
Top ten big data security and privacy challengesTop ten big data security and privacy challenges
Top ten big data security and privacy challenges
 

Viewers also liked

OpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part IIOpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part II
Angelo Corsaro
 
20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies
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
 
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é
Angelo Corsaro
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part I
Angelo Corsaro
 
Vortex Tutorial Part II
Vortex Tutorial Part IIVortex Tutorial Part II
Vortex Tutorial Part II
Angelo Corsaro
 
Advanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAdvanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part I
Angelo Corsaro
 
Stream Processing with DDS and CEP
Stream Processing with  DDS and CEPStream Processing with  DDS and CEP
Stream Processing with DDS and CEP
Angelo Corsaro
 
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
Angelo Corsaro
 
Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part II
Angelo Corsaro
 
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.
Angelo Corsaro
 
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
Angelo Corsaro
 
OpenSplice DDS v6
OpenSplice DDS v6OpenSplice DDS v6
OpenSplice DDS v6
Angelo Corsaro
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with Vortex
Angelo Corsaro
 
Building Reactive Applications with DDS
Building Reactive Applications with DDSBuilding Reactive Applications with DDS
Building Reactive Applications with DDS
Angelo Corsaro
 
Introducing Vortex Lite
Introducing Vortex LiteIntroducing Vortex Lite
Introducing Vortex Lite
Angelo Corsaro
 
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
Angelo Corsaro
 
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
Jan S. Rellermeyer
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming Ruminations
Angelo Corsaro
 
Test 2 Polymer Notes
Test 2 Polymer NotesTest 2 Polymer Notes
Test 2 Polymer Notes
sad asad
 

Viewers also liked (20)

OpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part IIOpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part II
 
20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies
 
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++
 
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
 
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
 
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
 

Similar to Getting Started in DDS with C++ and Java

DDS QoS Unleashed
DDS QoS UnleashedDDS QoS Unleashed
DDS QoS Unleashed
Angelo Corsaro
 
Tweeting with OpenSplice DDS
Tweeting with OpenSplice DDSTweeting with OpenSplice DDS
Tweeting with OpenSplice DDS
Angelo Corsaro
 
Cloudand Xchange
Cloudand XchangeCloudand Xchange
Cloudand Xchange
Skills Matter
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDS
Angelo Corsaro
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
Angelo Corsaro
 
A Gentle Introduction to OpenSplice DDS
A Gentle Introduction to OpenSplice DDSA Gentle Introduction to OpenSplice DDS
A Gentle Introduction to OpenSplice DDS
Angelo Corsaro
 
Interoperable DDS Strategies
Interoperable DDS StrategiesInteroperable DDS Strategies
Interoperable DDS Strategies
Twin Oaks Computing, Inc.
 
Strategies for migration to public cloud
Strategies for migration to public cloudStrategies for migration to public cloud
Strategies for migration to public cloud
Siddharth Ram
 
onos-day-dkim-20150914-lkin
onos-day-dkim-20150914-lkinonos-day-dkim-20150914-lkin
onos-day-dkim-20150914-lkin
Dongkyun Kim
 
DDS and OPC UA Explained
DDS and OPC UA ExplainedDDS and OPC UA Explained
DDS and OPC UA Explained
Angelo Corsaro
 
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
Alan 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
DevOps.com
 
Beyond messaging
Beyond messagingBeyond messaging
Beyond messaging
Angelo Corsaro
 
DDS Enabling Open Architecture
DDS Enabling Open ArchitectureDDS Enabling Open Architecture
DDS Enabling Open Architecture
Real-Time Innovations (RTI)
 
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
 
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...
FIWARE
 
Fast RTPS
Fast RTPSFast RTPS
Fast RTPS
eProsima
 
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
IRJET Journal
 
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.
Gerardo Pardo-Castellote
 
Cloud Migration Strategy and Best Practices
Cloud Migration Strategy and Best PracticesCloud Migration Strategy and Best Practices
Cloud Migration Strategy and Best Practices
QBurst
 

Similar to Getting Started in DDS with C++ and Java (20)

DDS QoS Unleashed
DDS QoS UnleashedDDS QoS Unleashed
DDS QoS Unleashed
 
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
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
 
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
 

More from Angelo Corsaro

Zenoh: The Genesis
Zenoh: The GenesisZenoh: The Genesis
Zenoh: The Genesis
Angelo Corsaro
 
zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data Fabric
Angelo Corsaro
 
Zenoh Tutorial
Zenoh TutorialZenoh Tutorial
Zenoh Tutorial
Angelo Corsaro
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Angelo Corsaro
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query compute
Angelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
Angelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
Angelo Corsaro
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Angelo Corsaro
 
Eastern Sicily
Eastern SicilyEastern Sicily
Eastern Sicily
Angelo Corsaro
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructure
Angelo Corsaro
 
Cyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeCyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT Age
Angelo Corsaro
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing Platform
Angelo Corsaro
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture Four
Angelo Corsaro
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture Three
Angelo Corsaro
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture Two
Angelo Corsaro
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture One
Angelo Corsaro
 
Data Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsData Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained Envionrments
Angelo Corsaro
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security Standard
Angelo Corsaro
 
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
Angelo Corsaro
 
Fog Computing Defined
Fog Computing DefinedFog Computing Defined
Fog Computing Defined
Angelo Corsaro
 

More from Angelo Corsaro (20)

Zenoh: The Genesis
Zenoh: The GenesisZenoh: The Genesis
Zenoh: The Genesis
 
zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data Fabric
 
Zenoh Tutorial
Zenoh TutorialZenoh Tutorial
Zenoh Tutorial
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query compute
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
 
Eastern Sicily
Eastern SicilyEastern Sicily
Eastern Sicily
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructure
 
Cyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeCyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT Age
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing Platform
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture Four
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture Three
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture Two
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture One
 
Data Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsData Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained Envionrments
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security Standard
 
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
 

Recently uploaded

GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Zilliz
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 

Recently uploaded (20)

GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 

Getting Started in DDS with C++ and Java