SlideShare une entreprise Scribd logo
1  sur  114
Télécharger pour lire hors ligne
Angelo Corsaro, PhD
Chief Technology Officer
angelo.corsaro@prismtech.com
Data Distribution Service
The
Tutorial
DDS is a standard technology for
ubiquitous, interoperable, secure,
platform independent, and real-time data
sharing across network connected devices
DDS in131
Characters
The DDS Standard
Standard
Adoption
CopyrightPrismTech,2015
John Deere’s machinery uses DDS for internal communication as well as for vehicle-to-vehicle
coordination
Telemetry Data is constantly sent to a Cloud for preventive maintenance
In this use case VORTEX enables fog computing as well as cloud computing
John Deere Autonomous FarmingSmart farming
smart cities
Smart Lightbulbs
96Kbytes Memory
Connected Medical Devices
CopyrightPrismTech,2015
Smart grids and power generation
European air traffic control
DDS is the standard recommended by
Eurocontrol/Eurocae for Pan-European
flight data sharing
Grasping the Idea
CopyrightPrismTech,2015
DDS provides a Distributed Data
Space abstraction where
applications can autonomously
and asynchronously read and write
data enjoying spatial and temporal
decoupling
Its built-in dynamic discovery
isolates applications from network
topology and connectivity details
DDS’ Data Space is completely
decentralised
High Level Abstraction
DDS Global Data Space
...
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Reader
Data
Writer
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
Conceptual Model
DDS Global Data Space
...
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Reader
Data
Writer
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
Conceptual Model Actual Implementation
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Writer
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
TopicD
QoS
TopicD
QoS
TopicA
QoS
DDS Global Data Space
...
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Reader
Data
Writer
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
The	
  communication	
  between	
  
the	
  DataWriter	
  and	
  matching	
  
DataReaders	
  can	
  be	
  peer-­‐to-­‐
peer	
  exploiting	
  UDP/IP	
  
(Unicast	
  and	
  Multicast)or	
  
TCP/IP
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Writer
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
TopicD
QoS
TopicD
QoS
TopicA
QoS
The	
  communication	
  between	
  
the	
  DataWriter	
  and	
  matching	
  
DataReaders	
  can	
  be	
  
“brokered”	
  but	
  still	
  
exploiting	
  UDP/IP	
  (Unicast	
  
and	
  Multicast)or	
  TCP/IP
CopyrightPrismTech,2014
DDS is independent from the
- Programming language,
- Operating System
- HW architecture
Platform Independent
Decomposing DDS
Information Organisation
Copyright2013,PrismTech–AllRightsReserved.
Domain
• DDS data lives within a domain
• A domain is identified with a non
negative integer, such as 1, 3, 31
• The number 0 identifies the default
domain
• A domain represent an impassable
communication plane DDS Domain
Copyright2013,PrismTech–AllRightsReserved.
Partitions
• Partitions are the mechanism provided by DDS to
organise information within a domain
• Access to partitions is controlled through QoS Policies
• Partitions are defined as strings:
• “system:telemetry”	
  
• “system:log”	
  
• “data:row-­‐2:col-­‐3”	
  
• Partitions addressed by name or regular expressions:
• ”system:telemetry”	
  
• “data:row-­‐2:col-­‐*”
Partitions
Information Definition
Copyright2013,PrismTech–AllRightsReserved.
Topic
• A Topic defines a domain-wide information’s class
• A Topic is defined by means of a (name, type, qos)
tuple, where
• name: identifies the topic within the domain
• type: is the programming language type associated
with the topic.Types are extensible and evolvable
• qos: is a collection of policies that express the non-
functional properties of this topic, e.g. reliability,
persistence, etc.
Topic
Type
Name
QoS
Copyright2013,PrismTech–AllRightsReserved.
Topic and Instances
• As explained in the previous slide a topic defines a class/type of information
• Topics can be defined as Singleton or can have multiple Instances
• Topic Instances are identified by means of the topic key
• A Topic Key is identified by a tuple of attributes -- like in databases
• Remarks:
• A Singleton topic has a single domain-wide instance
• A “regular” Topic can have as many instances as the number of different key values,
e.g., if the key is an 8-bit character then the topic can have 256 different instances
Example
Copyright2013,PrismTech–AllRightsReserved.
Active Floor
• Assume we are building an active floor
• This active floor is made by a matrix of
pressure sensors used to detects position,
and indirectly movement
• This information is then used by the
application that uses the active floor for
positioning or entertainment
Cell:	
  (i,j)
Copyright2013,PrismTech–AllRightsReserved.
Active Floor
• The generic active cell can be modeled with a
topic that has an instance for each value of (i,j).
The topic type can be defined as:
• Each cell is now distinguishable and associated
with a topic instance
Cell:	
  (i,j)
struct	
  TCell	
  {	
  
	
  	
  	
  short	
  row;	
  	
  
	
  	
  	
  short	
  column;	
  
	
  	
  	
  float	
  pressure;	
  //	
  in	
  kPa	
  
};	
  
#pragma	
  keylist	
  TCell	
  row	
  column
Copyright2013,PrismTech–AllRightsReserved.
Active Floor
• How can we know when something is on the
cell?
• The detection can be based on the difference
between the atmospheric pressure, say P0, and
the pressure sensed by the cell
• We can model this as a Singleton Topic
ReferencePressure defined by the type:
Cell:	
  (i,j)
struct	
  TReferencePressure	
  {	
  
	
  	
  	
  float	
  pressure;	
  //	
  in	
  kPa	
  
	
  	
  	
  float	
  precision;	
  	
  
};	
  
#pragma	
  keylist	
  TReferencePressure
Copyright2013,PrismTech–AllRightsReserved.
Active Floor
• Each sensor has associated a topic
instance identified by the
(row,column) coordinate -- the
instance key
• Each instance produces a stream of
pressure values that in DDS terms
are called samples
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
struct	
  TCell	
  {	
  
	
  	
  	
  short	
  row;	
  
	
  	
  	
  short	
  column;	
  
	
  	
  	
  float	
  pressure;	
  //	
  in	
  kPa	
  
};	
  
#pragma	
  keylist	
  Cell	
  row	
  column
Going 3D
Copyright2013,PrismTech–AllRightsReserved.
Active Floors on a Building
• Let’s assume now that we
have a building that uses
active floors to detect
presence and movement
• How can we organize the
out data model?
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
Active Floors on a Building
• The first thing to do is to
introduce the third
dimension to our cell:
struct	
  TCell	
  {	
  
	
  	
  	
  short	
  row;	
  
	
  	
  	
  short	
  column;	
  
	
  	
  	
  short	
  floor;	
  
	
  	
  	
  float	
  pressure;	
  //	
  in	
  kPa	
  
};	
  
#pragma	
  keylist	
  TCell	
  row	
  column	
  floor
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
Active Floors on a Building
• As we move from a single floor to a
building we need to add some more
structure to our data
• We can now use:
• A Domain for each Building
• A Partition for each Floor
• A Partition for reference value, i.e.
Partition
• A Partition for the configuration
information, e.g. how many floors,
how many rows/cols per floor
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
Active Floors on a Building
• Thus the resulting structure is:
• Floor Partitions:
• “building:f-­‐1”	
  
• “building:f-­‐2”	
  
• ...	
  
• ReferenceValues Partition:
• “building:refvals”	
  
• Configuration Partition:
• “building:config”
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Producing Information
Copyright2013,PrismTech–AllRightsReserved.
DataWriter
• A DataWriter (DW) is a strongly typed
entity used to produce samples for one or
more instances of a Topic, with a given QoS
• Conceptually, the DataWriter QoS should be
the same as the Topic QoS or more stringent
• However, DDS does enforce a specific
relationship between the Topic and DataWriter
QoS
DW
Type
Topic
QoS
Copyright2013,PrismTech–AllRightsReserved.
DataWriter
• The DataWriter controls the life-cycle of Topic
Instances and allows to:
• Define a new topic instance
• Write samples for a topic instance
• Dispose the topic instance
DW
Type
Topic
QoS
Consuming Information
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• A DataReader (DR) is a strongly typed entity used
to access and/or consume samples for a Topic,
with a given QoS
• Conceptually, the DataReader QoS should be the same
as the Topic QoS or less stringent
• However, DDS does enforce a specific relationship
between the Topic and DataReader QoS
DR
Type
Topic
QoS
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
n=3
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
n=3
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
n=3
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
n=3
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
n=3
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
n=3
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
n=3
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Samples are stored in the DataReader
Cache
• Samples can be read or taken from the
cache
• Samples taken are evicted from the
cache
• Samples read remain in the cache and
are simply market as read
• The cache content can be selected based
on content or state. More on this later...
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Putting all Together
CopyrightPrismTech,2015
Anatomy of a DDS Application
Copyright2013,PrismTech–AllRightsReserved.
DomainParticipant
• The DomainParticipant is the programming entity that gives access
to a DDS domain
• A DomainParticipant is created as follows:
//	
  ISO	
  C++	
  DDS	
  API	
  
int	
  domain_id	
  =	
  18;	
  
auto	
  dp	
  =	
  DomainParticipant(domain_id);
//	
  Java	
  5	
  DDS	
  API	
  
int	
  domain_id	
  =	
  18;	
  
DomainParticipantFactory	
  dpf	
  =	
  	
  	
  	
  
	
  	
  	
  	
  DomainParticipantFactory.getInstance(env)	
  
DomainParticipant	
  dp	
  =	
  	
  
	
  	
  	
  	
  dpf.createParticipant(domainId);
Copyright2013,PrismTech–AllRightsReserved.
Topic
• Given a DomainParticipant we can define (or discover) Topics within
a domain.This can be done as follows:
• As this declaration does not explicitly provide QoS for the Topic, the
default QoS will be used
//	
  ISO	
  C++	
  DDS	
  API	
  
auto	
  topic	
  =	
  Topic<TCell>(dp,	
  “Cell”);
//	
  Java	
  5	
  DDS	
  API	
  
Topic<TCell>	
  topic	
  =	
  	
  
	
  	
  	
  	
  dp.createTopic(“Cell”,	
  TCell.class);
Copyright2013,PrismTech–AllRightsReserved.
Publisher/Subscriber
• Publisher/Subscriber, through the Partitions they are associated with,
define the scope of a write/read operation
• Partitions association is done through the Partition QoS Policy
• This association can be defined as a list of string as well as a list of
regular expressions
Copyright2013,PrismTech–AllRightsReserved.
Publisher/Subscriber
• Definition of a Publisher/Subscriber in the default partition:
• Definition of a Publisher/Subscriber with Partition settings
//	
  ISO	
  C++	
  DDS	
  API	
  
auto	
  pub	
  =	
  Publisher(dp);
//	
  ISO	
  C++	
  DDS	
  API	
  
auto	
  pub_qos	
  =	
  	
  
	
  	
  	
  dp.default_publisher_qos()	
  	
  
	
  	
  	
  <<	
  Partition(”af:telemetry”);	
  
auto	
  pub	
  =	
  Publisher(dp,	
  pub_qos);
//	
  ISO	
  C++	
  DDS	
  API	
  
auto	
  sub	
  =	
  Subscriber(dp);	
  
//	
  ISO	
  C++	
  DDS	
  API	
  
auto	
  sub_qos	
  =	
  	
  
	
  	
  	
  dp.default_subscriber_qos()	
  	
  
	
  	
  	
  <<	
  Partition(”af:telemetry”);	
  
auto	
  sub	
  =	
  Subscriber(dp,	
  sub_qos);
Copyright2013,PrismTech–AllRightsReserved.
Publisher/Subscriber
• Definition of a Publisher/Subscriber in the default partition:
• Definition of a Publisher/Subscriber with Partition settings
//	
  Java	
  5	
  DDS	
  API	
  
Publisher	
  pub	
  =	
  dp.createPublisher();
//	
  Java	
  5	
  DDS	
  API	
  
PublisherQos	
  pubQoS	
  =	
  	
  
	
  	
  	
  dp.getDefaultPublisherQos()	
  
	
  	
  	
  	
  	
  .with(pf.Partition(”af:telemetry”));	
  
Publisher	
  pub	
  =	
  	
  
	
  	
  	
  dp.createPublisher(pubQoS);
//	
  Java	
  5	
  DDS	
  API	
  
Subscriber	
  sub	
  =	
  dp.createSubscriber();	
  
//	
  Java	
  5	
  DDS	
  API	
  
SubscriberQos	
  subQoS	
  =	
  	
  
	
  	
  	
  dp.getDefaultSubscriberQos()	
  
	
  	
  	
  	
  	
  .with(pf.Partition(”af:telemetry”));	
  
Subscriber	
  sub	
  =	
  	
  
	
  	
  	
  dp.createSubscriber(subQoS);
Copyright2013,PrismTech–AllRightsReserved.
DataWriter
• A DataWriter with default QoS can be declared as follows:
//	
  ISO	
  C++	
  DDS	
  API	
  
auto	
  dw	
  =	
  DataWriter<TCell>(pub,	
  topic);	
  
//	
  Write	
  the	
  cell	
  c(1,1)	
  using	
  `writer`	
  
TCell	
  c11	
  =	
  {1,	
  1,	
  15};	
  
dw.write(c11);	
  
//	
  Write	
  the	
  cell	
  c(1,2)	
  using	
  the	
  `operator	
  <<`	
  
TCell	
  c12	
  =	
  {1,	
  2,	
  5};	
  
dw	
  <<	
  c12;
//	
  Java	
  5	
  DDS	
  API	
  
DataWriter<TCell>	
  dw	
  =	
  pub.createDataWriter<TCell>(topic);	
  
TCell	
  c11	
  =	
  new	
  TCell(1,	
  2,	
  15);	
  
dw.write(c11);
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• A DataReader with default QoS can be declared as follows:
//	
  ISO	
  C++	
  DDS	
  API	
  
auto	
  dr	
  =	
  DataReader<TCell>(sub,	
  topic);	
  
//	
  Read	
  Samples	
  
auto	
  samples	
  =	
  dr.read();	
  
//	
  Do	
  something	
  with	
  it	
  
std::for_each(samples.begin(),	
  samples.end(),	
  do_something);
//	
  Java	
  5	
  DDS	
  API	
  
DataReader<TCell>	
  dr	
  =	
  sub.createDataReader<TCell>(topic);
Data Selection
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Reading Samples
• Samples can be read from the Data Reader History Cache
• The action of reading a sample is non-destructive. Samples are not
removed from the cache
DataReader Cache
DataReader
...
DataReader Cache
DataReader
... read
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Taking Samples
• Samples can be taken from the Data Reader History Cache
• The action of taking a sample is destructive. Samples are removed
from the cache
DataReader Cache
DataReader
...
DataReader Cache
DataReader
... take
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Sample Selectors
• DDS provides some very flexible mechanisms for selecting the
samples to be read/take:
• Content
• Status
• These mechanisms are composable
Content-Based Selection
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Filters and Queries
• DDS Filters allow to control what gets
into a DataReader cache
• DDS Queries allow to control what gets
out of a DataReader cache
• Filters are defined by means of
ContentFilteredTopics
• Queries operate in conjunction with
read operations
• Filters and Queries are expressed as
SQL where clauses
DataReader Cache
DataReader
...
...
...
...
Filter
Query
Application
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Filters
// == ISO C++ DDS API
// Create a Topic
auto topic = Topic<ShapeType>(dp, “Circle”);
// Define filter expression and parameters
auto filter = Filter(“x < 100 AND y < 200”);
// Define content filtered topic
auto cftopic =
ContentFilteredTopic<ShapeType>(“CFCircle”, topic,
filter)
// Create a DataReader for the content-filtered Topic
auto dr = DataReader<ShapeType>(sub,cftopic)
struct ShapeType {
string color;
long x;
long y;
long shapesize;
};
#pragma keylist ShapeType color
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Filters
//	
  	
  	
  ==	
  Java	
  5DDS	
  API	
  ==	
  
final	
  PolicyFactory	
  pf	
  =	
  runtime.policyFactory();	
  
	
  	
  	
  final	
  DataReaderQos	
  drqos	
  =	
  
	
  	
  	
  	
  	
  	
  sub.getDefaultDataReaderQos()	
  
	
  	
  	
  	
  	
  	
  	
  	
  .withPolicy	
  (	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  pf.ContentFilter()	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .withFilter(	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  new	
  JavaScriptFilter<ShapeType>("data.x	
  >	
  data.y"))	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  );	
  
final	
  DataReader<ShapeType>	
  dr	
  =	
  sub.createDataReader(shape,	
  drqos);
struct ShapeType {
string color;
long x;
long y;
long shapesize;
};
#pragma keylist ShapeType color
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Query
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
//	
  Define	
  filter	
  expression	
  and	
  parameters	
  
auto	
  dr	
  =	
  DataReader<ShapeType>(sub,	
  topic)	
  	
  
val	
  query	
  =	
  Query(dr,	
  “x	
  <	
  100	
  AND	
  y	
  <	
  200”);	
  
dr.select()	
  
	
  	
  	
  	
  .content(query)	
  
	
  	
  	
  	
  .read();
struct ShapeType {
string color;
long x;
long y;
long shapesize;
};
#pragma keylist ShapeType color
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Query
//	
  	
  	
  ==	
  Java	
  5	
  DDS	
  API	
  ==	
  
Filter<ShapeType>	
  filter	
  =	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  new	
  JavaScriptFilter<ShapeType>("data.x	
  >	
  data.y"))	
  
dr.select()	
  
	
  	
  	
  	
  .content(filter)	
  
	
  	
  	
  	
  .read();
struct ShapeType {
string color;
long x;
long y;
long shapesize;
};
#pragma keylist ShapeType color
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Instances
• DDS provides a very efficient way of reading data belonging to a specific
Topic Instance
• Obviously, one could use queries to match the key’s value, but this is not as efficient
as the special purpose instance selector
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
auto	
  handle	
  =	
  	
  
	
  	
  	
  dr.lookup_instance(ShapeType(“RED”,	
  0,	
  0,	
  0));	
  
auto	
  data	
  =	
  	
  
	
  	
  	
  	
  	
  dr.select()	
  
	
  	
  	
  	
  	
  	
  .instance(handle)	
  
	
  	
  	
  	
  	
  	
  .read();
State Based Selection
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Sample, Instance, andView State
• The samples included in the DataReader cache have associated some meta-information
which, among other things, describes the status of the sample and its associated
stream/instance
• The Sample State (READ, NOT_READ) allows to distinguish between new samples
and samples that have already been read
• The View State (NEW, NOT_NEW) allows to distinguish a new instance from an
existing one
• The Instance State (ALIVE, NOT_ALIVE_DISPOSED,
NOT_ALIVE_NO_WRITERS) allows to track the life-cycle transitions of the instance
to which a sample belongs
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
State Selector in Action
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
//	
  Read	
  only	
  new	
  samples	
  
auto	
  data	
  =	
  dr.read()	
  
//	
  Read	
  any	
  samples	
  from	
  live	
  instances	
  
auto	
  data	
  =	
  	
  
	
  	
  	
  	
  	
  	
  	
  dr.select()	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  .state(DataState::any_data())	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  .read();
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
State Selector in Action
//	
  	
  	
  ==	
  Java	
  5	
  DDS	
  API	
  ==	
  
//	
  Read	
  only	
  new	
  samples	
  
Iterator<Sample<ShapeType>>	
  data	
  =	
  dr.read()	
  
//	
  Read	
  any	
  samples	
  from	
  live	
  instances	
  
Iterator<Sample<ShapeType>>	
  data	
  =	
  	
  
	
  	
  	
  	
  	
  	
  	
  dr.select()	
  
	
  	
  	
  	
  	
  	
  	
  	
  .dataState(sub.createDataState().withAnySampleState())	
  
	
  	
  	
  	
  	
  	
  	
  	
  .read();
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
auto	
  data	
  =	
  	
  
	
  	
  	
  dr.select()	
  
	
  	
  	
  	
  	
  	
  	
  	
  .content(query)	
  
	
  	
  	
  	
  	
  	
  	
  	
  .state(data_state)	
  
	
  	
  	
  	
  	
  	
  	
  	
  .instance(handle)	
  
	
  	
  	
  	
  	
  .read();
Putting all Together
• Selectors can be composed in a flexible and expressive manner
Application / DDS
Interaction Models
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Interaction Models
Polling
•The application proactively polls for data availability as well as special events, such as a
deadline being missed, etc. Notice that all DDS API calls, exclusion made for wait
operations, are non-blocking
Synchronous Notification
•The application synchronously waits for some conditions to be verified, e.g., data
availability, instance lifecycle change, etc.
Asynchronous Notification
•The application registers the interest to be asynchronously notified when specific
condition are satisfied, e.g. data available, a publication matched, etc.
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Synchronous Notifications
• DDS provides a mechanism known as WaitSet to synchronously
wait for a condition
• Condition can predicate on:
• communication statuses
• data availability
• data availability with specific content
• user-triggered conditions
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
WaitSet
//	
  	
  	
  ==	
  Java	
  5	
  DDS	
  API	
  ==	
  
//	
  Create	
  the	
  waitset	
  
WaitSet	
  ws	
  =	
  runtime.createWaitSet();	
  
Subscriber.DataState	
  ds	
  =	
  sub.createDataState();	
  
//	
  Create	
  the	
  condition	
  
Condition	
  c	
  =	
  dr.createReadCondition(	
  
	
   	
   	
   	
   	
   	
   	
   ds.withAnyViewState()	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .with(InstanceState.ALIVE)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .with(SampleState.NOT_READ));	
  
//	
  Attach	
  the	
  condition	
  
ws.attachCondition(c);	
  
//	
  Wait	
  for	
  the	
  condition	
  
ws.wait();
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Asynchronous Notifications
• DDS provides a mechanism known as Listeners for asynchronous
notification of a given condition
• Listener interest can predicate on:
• communication statuses
• data availability
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Listener Declaration
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
class	
  ShapeListener	
  :	
  public	
  dds::sub::NoOpDataReaderListener<ShapeType>	
  {	
  
public:	
  
	
  	
  ShapeListener()	
  {}	
  
	
  	
  virtual	
  void	
  on_data_available(dds::sub::DataReader<ShapeType>&	
  dr)	
  {	
  
	
  	
  	
  	
  auto	
  samples	
  =	
  dr.read();	
  
	
  	
  	
  	
  std::for_each(samples.begin(),	
  
	
   	
   	
  	
  samples.end(),	
  
	
   	
   	
  	
  [](const	
  dds::sub::Sample<ShapeType>&	
  sample)	
  {	
  	
  
	
   	
   	
  	
  	
  	
  if	
  (sample.info().valid())	
  	
  //	
  Check	
  if	
  sample	
  contains	
  valid	
  data	
  
	
   	
   	
  	
  	
  	
  	
  	
  std::cout	
  <<	
  sample.data()	
  <<	
  std::endl;	
  
	
   	
   	
  	
  });	
  
	
  	
  }	
  
	
  	
  virtual	
  void	
  on_liveliness_changed(dds::sub::DataReader<ShapeType>&	
  the_reader,	
  
	
   	
   	
   	
   	
  	
  	
  	
  const	
  dds::core::status::LivelinessChangedStatus&	
  status)	
  	
  
	
  	
  {	
  	
  
	
  	
  	
  	
  std::cout	
  <<	
  ">>	
  Liveliness	
  Changed!	
  "	
  <<	
  std::endl;	
  
	
  	
  }	
  
};
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Listener Registration
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
auto	
  l	
  =	
  new	
  ShapeListener();	
  
//	
  Create	
  a	
  “nothing”	
  status	
  mask	
  
StatusMask	
  mask	
  =	
  StatusMask::none();	
  
//	
  Add	
  the	
  statuses	
  we	
  are	
  interested	
  in.	
  
mask	
  <<	
  StatusMask::data_available()	
  	
  
	
  	
  	
  	
  	
  <<	
  StatusMask::liveliness_changed()	
  	
  
	
  	
  	
  	
  	
  <<	
  StatusMask::liveliness_lost();	
  	
  
//	
  Register	
  the	
  listener	
  with	
  the	
  associated	
  mask	
  
dr.listener(l,	
  mask);
Quality of Service
CopyrightPrismTech,2015
For data to flow from a DataWriter (DW) to
one or many DataReader (DR) a few
conditions have to apply:
The DR and DW domain participants have
to be in the same domain
The partition expression of the DR’s
Subscriber and the DW’s Publisher
should match (in terms of regular
expression match)
The QoS Policies offered by the DW
should exceed or match those requested
by the DR
Quality of Service
Domain
Participant
DURABILITY
OWENERSHIP
DEADLINE
LATENCY BUDGET
LIVELINESS
RELIABILITY
DEST. ORDER
Publisher
DataWriter
PARTITION
DataReader
Subscriber
Domain
Participant
offered
QoS
Topic
writes reads
Domain Id
joins joins
produces-in consumes-from
RxO QoS Policies
requested
QoS
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
QoS DSL
• The ISO C++ and Java 5 APIs provide DSL for dealing with QoS Policies configuration
• The DSL uses language specific idioms, such as fluid interfaces, as well as specific features
of the languages
• Policies as well as Entity QoS are immutable — this allows for better safety and
object sharing
• Policies are treated as algebraic data types and the DSL provide constructors of
each of the cases
• A QoS Provider can now be used to retrieve QoS settings from external sources, e.g. a
file, an HTTP server, DDS durability
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
C++ QoS Policy DSL
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
DataWriterQos	
  dwqos	
  =	
  pub.default_datawriter_qos()	
  	
  
	
  	
  <<	
  History.KeepLast(10)	
  
	
  	
  <<	
  Durability.Transient();	
  
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Data Delivery
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Reliability QoS Policy
The Reliability Policy controls the level of guarantee offered by the DDS
in delivering data to subscribers
•Reliable. In steady-state, and with no data writer crashes, guarantees
that all samples in the DataWriter history will eventually be delivered
to all the DataReader
•Best Effort. Indicates that it is acceptable not to retry propagation
of samples
QoS Policy Applicability RxO Modifiable
RELIABILITY T, DR, DW Y N
Copyright2013,PrismTech–AllRightsReserved.
Reliability semantics
Copyright2013,PrismTech–AllRightsReserved.
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Data Availability
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
History QoS Policy
The DataWriter HISTORY QoS Policy controls
the amount of data that can be made available to
late joining DataReaders under
TRANSIENT_LOCAL Durability
The DataReader HISTORY QoS Policy controls
how many samples will be kept on the reader
cache
•Keep Last. DDS will keep the most recent
“depth” samples of each instance of data identified
by its key
•Keep All. The DDS keep all the samples of each
instance of data identified by its key -- up to
reaching some configurable resource limits
QoS Policy Applicability RxO Modifiable
HISTORY T, DR, DW N N
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
KeepLast(3)
KeepLast(1)
KeepAll
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Durability QoS Policy
The DURABILITY QoS controls the data availability w.r.t. late joiners, specifically
the DDS provides the following variants:
• Volatile. No need to keep data instances for late joining data readers
• Transient Local. Data instance availability for late joining data reader is
tied to the data writer availability
• Transient. Data instance availability outlives the data writer
• Persistent. Data instance availability outlives system restarts
QoS Policy Applicability RxO Modifiable
DURABILITY T, DR, DW Y N
Copyright2013,PrismTech–AllRightsReserved.
Data
Writer
Data
Reader
TopicA
QoS
Volatile Durability
• No Time Decoupling
• Readers get only data produced after they joined the Global Data Space
1
Copyright2013,PrismTech–AllRightsReserved.
Volatile Durability
• No Time Decoupling
• Readers get only data produced after they joined the Global Data Space
Data
Writer
Data
Reader
TopicA
QoS
Data
Reader
1
Late Joiner
Copyright2013,PrismTech–AllRightsReserved.
Volatile Durability
• No Time Decoupling
• Readers get only data produced after they joined the Global Data Space
Data
Writer
Data
Reader
TopicA
QoS
Data
Reader
1
Late Joiner
22
Copyright2013,PrismTech–AllRightsReserved.
Data
Writer
Data
Reader
TopicA
QoS
Transient Local Durability
• Some Time Decoupling
• Data availability is tied to the availability of the data writer and the history settings
11
Copyright2013,PrismTech–AllRightsReserved.
Transient Local Durability
• Some Time Decoupling
• Data availability is tied to the availability of the data writer and the history settings
Data
Writer
Data
Reader
TopicA
QoS
Data
Reader
1
Late Joiner
11
Copyright2013,PrismTech–AllRightsReserved.
Data
Writer
Data
Reader
TopicA
QoS
Data
Reader
2
Transient-Local Durability
• Some Time Decoupling
• Data availability is tied to the availability of the data writer and the history settings
1
2
1
12
Copyright2013,PrismTech–AllRightsReserved.
Data
Writer
Data
Reader
TopicA
QoS
Transient Durability
• Time Decoupling
• Data availability is tied to the availability of the durability service
1
1
Copyright2013,PrismTech–AllRightsReserved.
Data
Writer
Data
Reader
TopicA
QoS
Data
Reader
1
Transient Durability
• Time Decoupling
• Data availability is tied to the availability of the durability service
1
Late Joiner
1
Copyright2013,PrismTech–AllRightsReserved.
Data
Writer
Data
Reader
TopicA
QoS
Data
Reader
2
Transient Durability
• Time Decoupling
• Data availability is tied to the availability of the durability service
1
2
1
1
2
Copyright2013,PrismTech–AllRightsReserved.
Data
Reader
TopicA
QoS
Data
Reader
Transient Durability
• Time Decoupling
• Data availability is tied to the availability of the durability service
1
1
2
2
12
Copyright2013,PrismTech–AllRightsReserved.
Transient Durability
• Time Decoupling
• Data availability is tied to the availability of the durability service
1
Late Joiner
1
Data
Reader
TopicA
QoS
Data
Reader
Data
Reader
2
2
12 12
Idioms
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Soft State
• In distributed systems you often need to model soft-state -- a state that
is periodically updated
• Examples are the reading of a sensor (e.g.Temperature Sensor), the
position of a vehicle, etc.
• The QoS combination to model Soft-State is the following:
Reliability	
  	
  	
  	
  	
  	
  =>	
  	
  BestEffort	
  
Durability	
  	
  	
  	
  	
  	
  	
  =>	
  	
  Volatile	
  	
  
History	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  	
  KeepLast(n)	
  [with	
  n	
  =	
  1	
  in	
  most	
  of	
  the	
  cases]	
  
Deadline	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  	
  updatePeriod	
  
LatencyBudget	
  	
  	
  	
  =>	
  	
  updatePeriod/3	
  [rule	
  of	
  thumb]	
  
DestinationOrder	
  =>	
  	
  SourceTimestamp	
  [if	
  multiple	
  writers	
  per	
  instance]
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Hard State
• In distributed systems you often need to model hard-state -- a state that
is sporadically updated and that often has temporal persistence
requirements
• Examples are system configuration, a price estimate, etc.
• The QoS combination to model Hard-State is the following:
Reliability	
  	
  	
  	
  	
  	
  =>	
  	
  Reliable	
  
Durability	
  	
  	
  	
  	
  	
  	
  =>	
  	
  Transient	
  |	
  Persistent	
  	
  
History	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  	
  KeepLast(n)	
  [with	
  n	
  =	
  1	
  in	
  most	
  of	
  the	
  cases]	
  
DestinationOrder	
  =>	
  	
  SourceTimestamp	
  [if	
  multiple	
  writers	
  per	
  instance]
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Events
• In distributed systems you often need to model events -- the
occurrence of something noteworthy for our system
• Examples are a collision alert, the temperature beyond a given threshold,
etc.
• The QoS combination to model Events is the following:
Reliability	
  	
  	
  	
  	
  	
  =>	
  	
  Reliable	
  
Durability	
  	
  	
  	
  	
  	
  	
  =>	
  	
  any	
  	
  	
  	
  	
  	
  	
  	
  [depends	
  on	
  system	
  requirements]	
  	
  
History	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  	
  KeepAll	
  [on	
  both	
  DataWriter	
  and	
  DataReader!]	
  
DestinationOrder	
  =>	
  	
  SourceTimestamp
Idiomatic DDS
CopyrightPrismTech,2015
State Writer
template <typename T>
class StateWriter {
public:
StateWriter(const std::string& name, int retain = 1,
bool persistent = false, int domainId = 0);
void write(const T& data);
};
CopyrightPrismTech,2015
State Reader
template <typename T>
class StateReader {
public:
StateReader(const std::string& name,
bool persistent = false, int domainId = 0);
Maybe<T> get(const T& key);
dds::sub::LoanedSamples<T> get();
std::function<void(StateReader<T>&)> on_change() const;
void on_change(std::function<void(StateReader<T>)> f);
};
CopyrightPrismTech,2015
StateVector Reader
template <typename T>
class StateVectorReader {
public:
StateVectorReader(const std::string& name, int retain,
bool persistent = false, int domainId = 0);
Maybe<dds::sub::LoanedSamples<T>>
get(const T& key);
dds::sub::LoanedSamples<T> get();
CopyrightPrismTech,2015
StateStream
template <typename T>
class StateStream {
public:
StateStream(const std::string& name,
std::function<void(const T&)> fun,
int retain = 1,
bool persistent = false,
int domainId = 0); :
~StateStream();
};
CopyrightPrismTech,2015
Queue
template <typename T>
class Queue {
public:
Queue(const std::string name, int retain = 0,
bool persistent = false, int domainId = 0)
void enqueue(const T& data);
T peek(const dds::core::Duration timeout = dds::core::Duration::infinite());
T dequeue(const dds::core::Duration timeout = dds::core::Duration::infinite());
void ack(const T& data);
};
CopyrightPrismTech,2015
Enqueue
template <typename T>
class Enqueue {
public:
Enqueue(const std::string name, int retain = 0,
bool persistent = false, int domainId = 0);
void enqueue(const T& data);
};
Live Coding lab
CopyrightPrismTech,2015

Contenu connexe

Tendances

Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2Jaime Martin Losa
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service TutorialAngelo Corsaro
 
The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part IIAngelo Corsaro
 
DDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardDDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardAngelo Corsaro
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security StandardAngelo Corsaro
 
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingDDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingJaime Martin Losa
 
OMG Data-Distribution Service (DDS) Tutorial - 2009
OMG Data-Distribution Service (DDS) Tutorial - 2009OMG Data-Distribution Service (DDS) Tutorial - 2009
OMG Data-Distribution Service (DDS) Tutorial - 2009Gerardo Pardo-Castellote
 
Getting Started in DDS with C++ and Java
Getting Started in DDS with C++ and JavaGetting Started in DDS with C++ and Java
Getting Started in DDS with C++ and JavaAngelo 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 ModellingAngelo Corsaro
 
Introduction to DDS
Introduction to DDSIntroduction to DDS
Introduction to DDSRick Warren
 
zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data FabricAngelo Corsaro
 
10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDSAngelo Corsaro
 
OMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time SystemsOMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time SystemsAngelo Corsaro
 

Tendances (20)

Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
 
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
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part II
 
DDS Over Low Bandwidth Data Links
DDS Over Low Bandwidth Data LinksDDS Over Low Bandwidth Data Links
DDS Over Low Bandwidth Data Links
 
DDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardDDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing Standard
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security Standard
 
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingDDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
 
DDS QoS Unleashed
DDS QoS UnleashedDDS QoS Unleashed
DDS QoS Unleashed
 
DDS Best Practices
DDS Best PracticesDDS Best Practices
DDS Best Practices
 
OMG Data-Distribution Service (DDS) Tutorial - 2009
OMG Data-Distribution Service (DDS) Tutorial - 2009OMG Data-Distribution Service (DDS) Tutorial - 2009
OMG Data-Distribution Service (DDS) Tutorial - 2009
 
Getting Started in DDS with C++ and Java
Getting Started in DDS with C++ and JavaGetting Started in DDS with C++ and Java
Getting Started in DDS with C++ and Java
 
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
 
Introduction to DDS
Introduction to DDSIntroduction to DDS
Introduction to DDS
 
zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data Fabric
 
10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS
 
OMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time SystemsOMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time Systems
 
UML Profile for DDS
UML Profile for DDSUML Profile for DDS
UML Profile for DDS
 
DDS Security
DDS SecurityDDS Security
DDS Security
 

En vedette

Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAngelo Corsaro
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDSAngelo Corsaro
 
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
 
Reactive Data Centric Architectures with Vortex, Spark and ReactiveX
Reactive Data Centric Architectures with Vortex, Spark and ReactiveXReactive Data Centric Architectures with Vortex, Spark and ReactiveX
Reactive Data Centric Architectures with Vortex, Spark and ReactiveXAngelo Corsaro
 
Vortex Tutorial Part II
Vortex Tutorial Part IIVortex Tutorial Part II
Vortex Tutorial Part IIAngelo Corsaro
 
Stream Processing with DDS and CEP
Stream Processing with  DDS and CEPStream Processing with  DDS and CEP
Stream Processing with DDS and CEPAngelo Corsaro
 
Advanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAdvanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAngelo Corsaro
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part IAngelo 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-WebAngelo 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 VortexAngelo 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
 
Building Reactive Applications with DDS
Building Reactive Applications with DDSBuilding Reactive Applications with DDS
Building Reactive Applications with DDSAngelo Corsaro
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with VortexAngelo Corsaro
 
20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies20 Tips for OpenSplice Newbies
20 Tips for OpenSplice NewbiesAngelo Corsaro
 
Introducing Vortex Lite
Introducing Vortex LiteIntroducing Vortex Lite
Introducing Vortex LiteAngelo 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 CloudAngelo Corsaro
 
Fog Computing with Vortex
Fog Computing with VortexFog Computing with Vortex
Fog Computing with VortexAngelo Corsaro
 
Building IoT Applications with Vortex and the Intel Edison Starter Kit
Building IoT Applications with Vortex and the Intel Edison Starter KitBuilding IoT Applications with Vortex and the Intel Edison Starter Kit
Building IoT Applications with Vortex and the Intel Edison Starter KitAngelo Corsaro
 
DDS and OPC UA Explained
DDS and OPC UA ExplainedDDS and OPC UA Explained
DDS and OPC UA ExplainedAngelo Corsaro
 

En vedette (20)

Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part II
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDS
 
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é
 
Reactive Data Centric Architectures with Vortex, Spark and ReactiveX
Reactive Data Centric Architectures with Vortex, Spark and ReactiveXReactive Data Centric Architectures with Vortex, Spark and ReactiveX
Reactive Data Centric Architectures with Vortex, Spark and ReactiveX
 
Vortex Tutorial Part II
Vortex Tutorial Part IIVortex Tutorial Part II
Vortex Tutorial Part II
 
Stream Processing with DDS and CEP
Stream Processing with  DDS and CEPStream Processing with  DDS and CEP
Stream Processing with DDS and CEP
 
Advanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAdvanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part I
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part I
 
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
 
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
 
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.
 
OpenSplice DDS v6
OpenSplice DDS v6OpenSplice DDS v6
OpenSplice DDS v6
 
Building Reactive Applications with DDS
Building Reactive Applications with DDSBuilding Reactive Applications with DDS
Building Reactive Applications with DDS
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with Vortex
 
20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies
 
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
 
Fog Computing with Vortex
Fog Computing with VortexFog Computing with Vortex
Fog Computing with Vortex
 
Building IoT Applications with Vortex and the Intel Edison Starter Kit
Building IoT Applications with Vortex and the Intel Edison Starter KitBuilding IoT Applications with Vortex and the Intel Edison Starter Kit
Building IoT Applications with Vortex and the Intel Edison Starter Kit
 
DDS and OPC UA Explained
DDS and OPC UA ExplainedDDS and OPC UA Explained
DDS and OPC UA Explained
 

Similaire à The Data Distribution Service Tutorial

Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDSkerush
 
Open splicedds espercep-webinar
Open splicedds espercep-webinarOpen splicedds espercep-webinar
Open splicedds espercep-webinarTomasz Waszczyk
 
Fiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPSFiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPSJaime Martin Losa
 
Architecting IoT Systems with Vortex
Architecting IoT Systems with VortexArchitecting IoT Systems with Vortex
Architecting IoT Systems with VortexAngelo Corsaro
 
Construire une « data fabric » pour les environnements edge
Construire une « data fabric » pour les environnements edgeConstruire une « data fabric » pour les environnements edge
Construire une « data fabric » pour les environnements edgeOpen Source Experience
 
Fiware: Connecting to robots
Fiware: Connecting to robotsFiware: Connecting to robots
Fiware: Connecting to robotsJaime Martin Losa
 
Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018Jaime Martin Losa
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsJaime Martin Losa
 
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large SystemsCyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large SystemsZettaScaleTechnology
 
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...Istvan Rath
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computeAngelo Corsaro
 
Tamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher
 
Nelson: Rigorous Deployment for a Functional World
Nelson: Rigorous Deployment for a Functional WorldNelson: Rigorous Deployment for a Functional World
Nelson: Rigorous Deployment for a Functional WorldTimothy Perrett
 
Using the Open Science Data Cloud for Data Science Research
Using the Open Science Data Cloud for Data Science ResearchUsing the Open Science Data Cloud for Data Science Research
Using the Open Science Data Cloud for Data Science ResearchRobert Grossman
 
IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...
IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...
IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...IEEEGLOBALSOFTSTUDENTPROJECTS
 
2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...
2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...
2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...IEEEFINALSEMSTUDENTPROJECTS
 
Artur Fejklowicz - “Data Lake architecture” AI&BigDataDay 2017
Artur Fejklowicz - “Data Lake architecture” AI&BigDataDay 2017Artur Fejklowicz - “Data Lake architecture” AI&BigDataDay 2017
Artur Fejklowicz - “Data Lake architecture” AI&BigDataDay 2017Lviv Startup Club
 
Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...
Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...
Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...InfluxData
 

Similaire à The Data Distribution Service Tutorial (20)

Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDS
 
Open splicedds espercep-webinar
Open splicedds espercep-webinarOpen splicedds espercep-webinar
Open splicedds espercep-webinar
 
Fiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPSFiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPS
 
Architecting IoT Systems with Vortex
Architecting IoT Systems with VortexArchitecting IoT Systems with Vortex
Architecting IoT Systems with Vortex
 
Construire une « data fabric » pour les environnements edge
Construire une « data fabric » pour les environnements edgeConstruire une « data fabric » pour les environnements edge
Construire une « data fabric » pour les environnements edge
 
Fiware: Connecting to robots
Fiware: Connecting to robotsFiware: Connecting to robots
Fiware: Connecting to robots
 
Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018
 
PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applications
 
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large SystemsCyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
 
Vortex Cloud Beyond Cloud Messaging
Vortex Cloud Beyond Cloud MessagingVortex Cloud Beyond Cloud Messaging
Vortex Cloud Beyond Cloud Messaging
 
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
 
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
 
Tamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptx
 
Nelson: Rigorous Deployment for a Functional World
Nelson: Rigorous Deployment for a Functional WorldNelson: Rigorous Deployment for a Functional World
Nelson: Rigorous Deployment for a Functional World
 
Using the Open Science Data Cloud for Data Science Research
Using the Open Science Data Cloud for Data Science ResearchUsing the Open Science Data Cloud for Data Science Research
Using the Open Science Data Cloud for Data Science Research
 
IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...
IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...
IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...
 
2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...
2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...
2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...
 
Artur Fejklowicz - “Data Lake architecture” AI&BigDataDay 2017
Artur Fejklowicz - “Data Lake architecture” AI&BigDataDay 2017Artur Fejklowicz - “Data Lake architecture” AI&BigDataDay 2017
Artur Fejklowicz - “Data Lake architecture” AI&BigDataDay 2017
 
Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...
Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...
Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...
 

Plus de 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 MonetisationAngelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingAngelo Corsaro
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing InfrastructureAngelo Corsaro
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing PlatformAngelo Corsaro
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture FourAngelo Corsaro
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture ThreeAngelo Corsaro
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture TwoAngelo Corsaro
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture OneAngelo Corsaro
 
Data Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsData Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsAngelo Corsaro
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsAngelo 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 StandardAngelo Corsaro
 
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...Angelo Corsaro
 
Fluid IoT Architectures
Fluid IoT ArchitecturesFluid IoT Architectures
Fluid IoT ArchitecturesAngelo Corsaro
 
Microservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part IIMicroservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part IIAngelo Corsaro
 

Plus de Angelo Corsaro (20)

Zenoh: The Genesis
Zenoh: The GenesisZenoh: The Genesis
Zenoh: The Genesis
 
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 -- 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
 
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
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming Ruminations
 
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...
 
Fluid IoT Architectures
Fluid IoT ArchitecturesFluid IoT Architectures
Fluid IoT Architectures
 
Microservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part IIMicroservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part II
 

Dernier

Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Dernier (20)

Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

The Data Distribution Service Tutorial