SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
20 Tips for
OpenSplice Newbies
Angelo Corsaro, Ph.D.
Chief Technology Officer
OMG DDS Sig Co-Chair
PrismTech
angelo.corsaro@prismtech.com
Domain
Tip #0


Domains, Partitions, Topics
                                       Domain (e.g. Domain 123)
¨   All DDS applications publish




                                                                                          Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
     and subscribe data on a
     Partition belonging to a
     given domain
                                           Partitions (e.g. Partition “Telemetry”)
¨   Partitions are defined by
     means for strings and can            Topic Instances/
     be matched with regular              Samples
     expressions

¨   If not explicitly specified the
     default partition in the
     default domain is
     automatically chosen
Tip #0


Partitions Matching
                                                                                       "building-1.floor-3.room-51"




                                                                                                                      Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                   "building-1.floor-1.room-*"

                                                ...                  building-1.floor-3.room-5        ...
¨   Partitions are
     defined by means                                 building-1.floor-1.room-111   building-1.floor15-.room-51

     for strings and can
     be matched with                                                 building-1.floor-3.room-11


     regular                                          building-1.floor-1.room-1      building-1.floor-10.room-100
     expressions]                                                          ...


                          "building-1.floor-*.room-11?"                    Domain
Configuration 101
Tip #1


Choosing a Domain
¨   In OpenSplice DDS v5.x a domain is selected by:




                                                                                   Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
     ¨   Defining the OSPL_URI environment variable
     ¨   Passing a URI pointing at the the domain XML configuration file at
          OpenSplice startup
     ¨   Passing the URI of the configuration file as a string parameter of the
          DomainParticipantFactory::create_participant method
     ¨   Passing the name of the domain as specified in the configuration file
          to the DomainParticipantFactory::create_participant method
     ¨   Passing the empty string to represent the default domain to the
          DomainParticipantFactory::create_participant method
Tip #1


Choosing a Domain
                                            Domain specified via URI




                                                                                         Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
 Defining Domain Configuration at Startup
                                            dpf.create_participant(
                                               “file:///some/path/myospl.xml”,
$ ospl start file:///some/path/myospl.xml
                                                qos,
                                                listener,
                                                mask);
 Default Domain

 dpf.create_participant(                    Domain specified via a Domain Name
    “”,
     qos,                                    dpf.create_participant(
     listener,                                  “MyDomainNameAsSpecifiedOnTheXMLFile”,
     mask);                                      qos,
                                                 listener,
                                                 mask);
Tip #1


Domains on OpenSplice v6.x
¨   The DDS specification did not originally define the type for the




                                                                             Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
     DomainId, as a result vendors where free to choose their on types

¨   As the DDSI/RTPS specification defines a DomainId with and integer it
     makes sense to uniform the DDS API to use an integer DomainID

¨   As a result, starting with OpenSplice DDS the domain will be selected
     specifying its associated id:

                                       dpf.create_participant(
                                           15,
                                           qos,
                                           listener,
                                           mask);
Tip #2


Start OpenSplice First




                                                                 Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
¨   OpenSplice v5.x runs by default on a shared/
     memory + daemon configuration
¨   As such, if you forget to start the infrastructure your
     application will fail at start up
¨   Thus always recall to run:
                                     $ ospl start
Tip #3


Shared Memory Size
     OpenSplice DDS shared memory size is defined in its




                                                                      Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
¨

     configuration file. The size defined by the default
     configuration file is 10MBytes
¨   Beware that different OS have different limitations w.r.t. the
     maximum shared memory segment that can be allocated
¨   If you want to go beyond the OS limits you need to change
     the configuration of your kernel
Tip #3


Linux
¨   The default value for the maximum shared memory segment is
     32MBytes




                                                                             Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
¨   This default can be changed in several ways

(1) Adding this line to your /etc/rc.d/rc.local file:
     echo “your_max_shared_memory_size” > /proc/sys/kernel/shmmax


(2) Changing the settings for the sys-limits (save changes on /etc/
sysctl.conf to maintain them across reboots):

         $ sysctl -w kernel.shmmax=yourMaxValue
Tip #3


Windows
     The default maximum size for Shared Memory




                                                                              Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
¨

     segments on Windows is 2GB
¨   To exend it, say to 3GB, add the /3GB the boot.ini
     as shown below:
                        [boot loader]
                        timeout=30
                        default=multi(0)disk(0)rdisk(0)partition(1)WINDOWS
                        [operating systems]
                        multi(0)disk(0)rdisk(0)partition
                        (1)WINDOWS="Windows NT
                        Workstation Version 4.00"
                        /3GB
DDS Topics
Tip #4


Topic Types & Keys




                                                                    Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
¨   Topic Types can define some of their attributes as keys
¨   Yet, even when a Topic type does not define a key the
     keylist directive has to be provided -- just to tell the IDL
     compiler that this is a topic
Tip #4


Topic Types & Keys
               Keyful                           Keyless




                                                                             Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
enum TemperatureScale {
   CELSIUS,
   FAHRENHEIT,                      struct UniversalConstants {
   KELVIN                              double PI;
};                                     double e; // Nepero Number
                                       double g; // Gravitational Constant
struct TempSensorType {                double NA; // Avogadro Number
   short id;                           double F; // Faraday Constant
   float temp;                         double K; // Boltzman Constant
   float hum;                          double c; // Light Speed
   TemperatureScale scale;           };
};                                  #pragma keylist UniversalConstants
#pragma keylist TempSensorType id
Tip #5


Topic Instances




                                                                                         Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
enum TemperatureScale {
   CELSIUS,                             Writer                     Reader
   FAHRENHEIT,
   KELVIN
};
                                 2   26.0   70.0   CELSIUS   1   26.0   70.0   CELSIUS
struct TempSensorType {          1   26.0   70.0   CELSIUS   2   26.0   70.0   CELSIUS
   short id;
   float temp;
   float hum;
   TemperatureScale scale;
};
#pragma keylist TempSensorType
Tip #5


Topic Instances




                                                                                                                         Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
enum TemperatureScale {
   CELSIUS,                                Writer                                   Reader
   FAHRENHEIT,
   KELVIN
};
                                    2   26.0   70.0   CELSIUS
struct TempSensorType {                                         1   26.0   70.0   CELSIUS    2   26.0   70.0   CELSIUS
                                    1   26.0   70.0   CELSIUS
   short id;
   float temp;
   float hum;
   TemperatureScale scale;
};
#pragma keylist TempSensorType id
Tip #6


 Topic Instances Lifecycle
struct VehiclePosition {
   string plate;




                                                                 Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
   long x;
   long y;
};                                      com.myco.VPos
#pragma keylist VehiclePosition plate




struct VehiclePosition {
   string plate;
   long x;
   long y;
};
#pragma keylist VehiclePosition

                                        com.myco.VPos
Tip #6


 Topic Instances Lifecycle
struct VehiclePosition {
   string plate;                                                            New




                                                                                  Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
   long x;                                              “A01”   100   200
   long y;
};                                      com.myco.VPos
#pragma keylist VehiclePosition plate




struct VehiclePosition {
   string plate;
   long x;
   long y;                                                                  New
};
#pragma keylist VehiclePosition                         “A01”   100   200

                                        com.myco.VPos
Tip #6


 Topic Instances Lifecycle
struct VehiclePosition {
   string plate;                                                               New




                                                                                     Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
   long x;                                                 “A01”   100   200
   long y;
};                                                                             New
#pragma keylist VehiclePosition plate                      “B41”   57    31


                                        com.myco.VPos



struct VehiclePosition {
   string plate;
   long x;
   long y;
};
#pragma keylist VehiclePosition          “B41”   57   31   “A01”   100   200

                                        com.myco.VPos
Tip #6


 Topic Instances Lifecycle
struct VehiclePosition {
   string plate;                                                                                     New




                                                                                                           Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
   long x;                                                  “A01”    110   210   “A01”   100   200
   long y;
};                                                                                                   New
#pragma keylist VehiclePosition plate                                            “B41”   57    31


                                                            com.myco.VPos



struct VehiclePosition {
   string plate;
   long x;
   long y;
};
#pragma keylist VehiclePosition         “A01”   110   210    “B41”    57    31   “A01”   100   200

                                                            com.myco.VPos
Tip #6


Topic Instances Lifecycle
                                                                                         New




                                                                                               Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                            “A01”   120   220   “A01”    110   210   “A01”   100   200

                                                                                         New
                                                                     “B41”   57    31


                                                com.myco.VPos




        “A01”   120   220   “A01”   110   210    “B41”    57    31   “A01”   100   200

                                                com.myco.VPos
Tip #6


Topic Instances Lifecycle
                                                                                                     New




                                                                                                           Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                        “A01”   120   220   “A01”    110   210   “A01”   100   200

                                                                                                     New
                                                            “B41”    47    19    “B41”   57    31


                                                            com.myco.VPos




  “B41”   47   19   “A01”   120   220   “A01”   110   210    “B41”    57    31   “A01”   100   200

                                                            com.myco.VPos
Tip #6


Topic Instances Lifecycle
                                                                                                     New




                                                                                                           Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                        “A01”   120   220   “A01”    110   210   “A01”   100   200

                                                                                                     New
                                        “B41” Disposed -
                                                 -          “B41”    47    19    “B41”   57    31


                                                            com.myco.VPos




  “B41”   47   19   “A01”   120   220   “A01”   110   210    “B41”    57    31   “A01”   100   200

                                                            com.myco.VPos
Tip #7


Default Lifecycle Settings
     The WriterDataLifecycle controls when instances are




                                                             Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
¨

     disposed. By default DDS disposes unregistered
     instances
¨   Automatically disposing an instance perhaps is not
     what your want to do when terminating your
     application, as this would remove persistent data for
     the given instance!
QoS
Tip #8


Understand the QoS Model
¨   DDS defines 22 QoS          DURABILITY   LIVELINESS       DEST. ORDER    TIME-BASED FILTER


     policies that can be
                                  HISTORY     OWENERSHIP         PARTITION    RESOURCE LIMITS




                                                                                                Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                  LIFESPAN    OWN. STRENGTH    PRESENTATION
     applied to                                                 RELIABILITY    DW LIFECYCLE

     communication               USER DATA      DEADLINE                        DR LIFECYCLE

     entities to control their   TOPIC DATA

                                 GROUP DATA
                                              LATENCY BUDGET

                                              TRANSPORT PRIO
                                                                              ENTITY FACTORY


     local as well as end-
     to-end behaviour                              RxO QoS     Local QoS


¨   Most of the QoS Policies that control an end-to-end property
     follow the so-called Request vs. Offered (RxO) Model based on
     which the QoS requested by the Consumer should not exceed
     the QoS Provided by the Producer
Tip #9


History + Reliability Interplay
¨   The History QoS controls the number of samples that




                                                                Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
     are maintained by DDS for a given topic
¨   DDS can keep the last n samples or keep all samples
     up to when they are not taken by the application
¨   The History setting has an impact on the reliability of
     data delivery as perceived by the application. Thus
     beware of your settings!
Tip #9


History + Reliability Interplay
 struct Counter {                                       QoS Settings
    int cID;
                                                        Reliability = Reliable




                                                                                                      Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
    int count;
 };
 #pragma keylist Counter cID
                                                        History = KeepLast(1)


                    History Depth = 1                       History Depth = 1
                     (DDS Default)                           (DDS Default)
                                            Network
                        1   1                                   1   2

      DataReader        2   1           1   2                   2   3
                                                                                DataWriter
                        3   1           2   2   2   3           3   1

                       Topic                                   Topic

          DataReader Cache                                       DataWriter Cache
Tip #9


History + Reliability Interplay
 struct Counter {                                     QoS Settings
    int cID;
                                                      Reliability = Reliable




                                                                                                    Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
    int count;
 };
 #pragma keylist Counter cID
                                                      History = KeepLast(1)


                    History Depth = 1                     History Depth = 1
                     (DDS Default)                         (DDS Default)
                                            Network
                        1   2                                 1   2

     DataReader         2   2                                 2   3
                                                                              DataWriter
                        3   1           2   3                 3   1

                       Topic                                 Topic

         DataReader Cache                                      DataWriter Cache
Tip #9


History + Reliability Interplay
 struct Counter {                                 QoS Settings
    int cID;
                                                  Reliability = Reliable




                                                                                                Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
    int count;
 };
 #pragma keylist Counter cID
                                                  History = KeepLast(1)


                    History Depth = 1                 History Depth = 1
                     (DDS Default)                     (DDS Default)
                                        Network
                        1   2                             1   2

     DataReader         2   3                             2   3
                                                                          DataWriter
                        3   1                             3   1

                       Topic                             Topic

         DataReader Cache                                  DataWriter Cache
Tip #7
                                                                                  #10


Define Resource Limits
¨   DDS Provides a QoS that allow to control the amount of resources used by




                                                                                        Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
     DataReaders and DataWriters
¨   By default, DDS does not imposes any limit, with the results that if you have a
     buggy application or an asymmetry in your system you might end-up
     consuming unbounded amount of memory -- and in the OpenSplice DDS case
     filling the Shared Memory
¨   To avoid this problem, always set appropriate Resource Limits for your
     application by defining:
      ¨ max_samples

      ¨ max_instances
      ¨ max_samples_per_instance
Accessing the Data
Tip #11


Read vs. Take                                                             struct Counter {
                                                                             int cID;
                                 QoS Settings                                int count;
¨   DataReader::read                                                     };
     iterates over the available History = KeepLast(k)




                                                                                                                Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                          #pragma keylist Counter cID

     sample instances
¨   Samples are not removed
     from the local cache as                            1   1     1   2     1   3   1   4

     result of a read                DataReader
                                                        2   1     2   2     2   3

                                                        3   1     3   2     3   3   3   4   3   5
¨   Read samples can be                                                                            Topic
     read again, by accessing
     the cache with the                  Samples Read                 Samples not Read

     proper options (more                                       DataReader Cache
     later)
Tip #11


Read vs. Take                                                             struct Counter {
                                                                             int cID;
                                 QoS Settings                                int count;
¨   DataReader::read                                                     };
     iterates over the available History = KeepLast(k)




                                                                                                                Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                          #pragma keylist Counter cID

     sample instances
¨   Samples are not removed
     from the local cache as                           1    1     1   2     1   3   1   4

     result of a read                DataReader
                                                       2    1     2   2     2   3

                                                       3    1     3   2     3   3   3   4   3   5
¨   Read samples can be                                                                            Topic
     read again, by accessing
                                                                            Samples not Read
     the cache with the                      Samples Read


     proper options (more                                       DataReader Cache
     later)
Tip #11


Read vs. Take                                                          struct Counter {
                                                                          int cID;
                                 QoS Settings                             int count;
¨   DataReader::read                                                  };
     iterates over the available History = KeepLast(k)




                                                                                                             Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                       #pragma keylist Counter cID

     sample instances
¨   Samples are not removed
     from the local cache as                         1   1     1   2     1   3   1   4

     result of a read                DataReader
                                                     2   1     2   2     2   3

                                                     3   1     3   2     3   3   3   4   3   5
¨   Read samples can be                                                                         Topic
     read again, by accessing
                                                    Samples Read                 Samples not Read
     the cache with the
     proper options (more                                    DataReader Cache
     later)
Tip #11


Read vs. Take                                                      struct Counter {
                                                                      int cID;
                             QoS Settings                             int count;
                                                                   };
¨   DataReader::take        History = KeepLast(k)




                                                                                                         Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                   #pragma keylist Counter cID

     iterates over the
     available sample
     instances
                                                 1   1     1   2     1   3   1   4



     Taken Samples are
                                                 2   1     2   2     2   3
¨                              DataReader
                                                 3   1     3   2     3   3   3   4   3   5

     removed from the                                                                        Topic
     local cache as result                                     Samples not Taken
     of a take
                                                         DataReader Cache
Tip #11


Read vs. Take                                                  struct Counter {
                                                                  int cID;
                             QoS Settings                         int count;
                                                               };
¨   DataReader::take        History = KeepLast(k)




                                                                                                     Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                               #pragma keylist Counter cID

     iterates over the
     available sample
     instances
                                                       1   2     1   3   1   4



     Taken Samples are
                                                       2   2     2   3
¨                              DataReader
                                                       3   2     3   3   3   4   3   5

     removed from the                                                                    Topic
     local cache as result                                       Samples not Taken
     of a take
                                                     DataReader Cache
Tip #11


Read vs. Take                                             struct Counter {
                                                             int cID;
                             QoS Settings                    int count;
                                                          };
¨   DataReader::take        History = KeepLast(k)




                                                                                                Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                          #pragma keylist Counter cID

     iterates over the
     available sample
     instances
                                                            1   3   1   4



     Taken Samples are
                                                            2   3
¨                              DataReader
                                                            3   3   3   4   3   5

     removed from the                                                               Topic
     local cache as result                                      Samples not Taken
     of a take
                                                     DataReader Cache
Tip #12


Sample, Instance, View State
                     History Depth = 2
                                         ¨   Along with data samples, DataReaders provides
                                              state information allowing to detect relevant




                                                                                                       Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                     1       1
                                              transitions in the life-cycle of data as well as data
                                              writers
                     2       2

                     3                   ¨   Sample State (READ | NOT_READ): Determines
 DataReader




                    SampleInfo                wether a sample has already been read by this
                                              DataReader or not.
                     1   1   1   2       ¨   Instance State (ALIVE, NOT_ALIVE, DISPOSED).
                     2   2   2   3            Determines wether (1) writer exist for the specific
                     3   1                    instance, or (2) no matched writers are currently
                     Samples                  available, or (3) the instance has been disposed
                         Topic           ¨   View State (NEW, NOT_NEW). Determines wether this
                                              is the first sample of a new (or re-born) instance
              DataReader Cache
Tip #13


Beware of Invalid Samples!
¨   For each data sample accessed via a read or take




                                                                     Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
     DDS provides you with a SampleInfo
¨   The SampleInfo contains meta-information about the
     Sample, such as timestamp, lifecycle information, etc.,
     but most importantly tells you if the data is valid or not!
¨   Data is not valid, when the sample you are receiving
     notifies things like an instance being unregistered or
     disposed
Tip #14


Reading Only “Fresh” Data




                                                            Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
dr.read(samples,
        infos,
        LENGTH_UNLIMITED, // read all available samples
        NOT_READ_SAMPLE_STATE,
        ANY_VIEW_STATE,
        ALIVE_INSTANCE_STATE);
Tip #15


Reading All Data




                                                            Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
dr.read(samples,
        infos,
        LENGTH_UNLIMITED, // read all available samples
        ANY_SAMPLE_STATE,
        ANY_VIEW_STATE,
        ALIVE_INSTANCE_STATE);
Tip #16


Getting Everything




                                                                            Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
 dr.read(samples,
         infos,
         LENGTH_UNLIMITED, // read all available samples
         ANY_SAMPLE_STATE,
         ANY_VIEW_STATE,
         ANY_INSTANCE_STATE);


NOTE: As explained on the Tip #13 in this case you might get invalid data
samples, thus have to check on their validity via the
SampleInfo.valid_data attribute
Tip #17


Status vs. Read Condition




                                                            Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
¨   Both a Status as well as a Read Condition can be
     used to wait for data to be available on a
     DataReader
¨   The main difference is that a ReadCondition allows
     to set the exact SAMPLE, VIEW and INSTANCE status
     for which the condition should trigger, while the
     StatusCondition triggers when a sample is received
Tip #17


Status vs. Read Condition
Guidelines




                                                                    Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
¨   If what you really care is getting a condition that triggers
     for the state ANY_SAMPLE_STATE, ANY_VIEW_STATE and
     ANY_INSTANCE_STATE than use a StatusCondition as this
     is more efficient than a ReadCondition
¨   If you are interested in having a condition that triggers
     for specific a status then use the ReadCondition
Memory Management
Tip #18


Return Memory Loans




                                                             Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
¨   The DataReader read/take allocate loan memory
     to the application when the length of the containers
     passed for storing samples and info is zero
¨   In this case the loaned memory must be returned
     via a return_loan operation!
Return Memory Loans
                                                                                               Tip #18




Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
Tip #19


Beware of Strings Ownership
¨   The DDS C++ API takes ownership of the string you pass




                                                                            Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
¨   As a result, you need to understand when it is necessary
     to “duplicate” a string
¨   To this end, DDS provides the DDS:string_dup call to
     facilitate this task

       subQos.partition.name.length (1);
       subQos.partition.name[0] = DDS::string_dup (read_partition);
Concluding Tip
Tip #20


Read, Write, Ask




                                                             Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
¨   Read the Manuals and if possible the Specification
¨   Write your own code examples
¨   Don’t be shy to ask questions on the OpenSplice
     mailing list
:: Connect with Us ::




                                                                                              Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
  ¥ opensplice.com         ¥ forums.opensplice.org
                                                                      ¥ @acorsaro
  ¥ opensplice.org         ¥ opensplicedds@prismtech.com                 ¥ @prismtech




                                                                     ¥ crc@prismtech.com
                                                                     ¥ sales@prismtech.com
¥ youtube.com/opensplicetube     ¥ slideshare.net/angelo.corsaro

Más contenido relacionado

La actualidad más candente

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 DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part IIAngelo Corsaro
 
DDS in Action -- Part I
DDS in Action -- Part IDDS in Action -- Part I
DDS in Action -- Part IAngelo Corsaro
 
DDS Tutorial -- Part I
DDS Tutorial -- Part IDDS Tutorial -- Part I
DDS Tutorial -- Part IAngelo 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 Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service TutorialAngelo Corsaro
 
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and SimulinkApplying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and SimulinkGerardo Pardo-Castellote
 
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
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution ServiceAngelo Corsaro
 
Db2 Warehouse セッション資料 db tech showcase
Db2 Warehouse セッション資料 db tech showcase Db2 Warehouse セッション資料 db tech showcase
Db2 Warehouse セッション資料 db tech showcase IBM Analytics Japan
 
Communication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeCommunication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeSumant Tambe
 
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
 
클라우드 네이티브 데이터베이스 서비스로 Oracle RAC 전환 - 김지훈 :: AWS 클라우드 마이그레이션 온라인
클라우드 네이티브 데이터베이스 서비스로 Oracle RAC 전환 - 김지훈 :: AWS 클라우드 마이그레이션 온라인클라우드 네이티브 데이터베이스 서비스로 Oracle RAC 전환 - 김지훈 :: AWS 클라우드 마이그레이션 온라인
클라우드 네이티브 데이터베이스 서비스로 Oracle RAC 전환 - 김지훈 :: AWS 클라우드 마이그레이션 온라인Amazon Web Services Korea
 
Virtual Desktop Infrastructure Overview
Virtual Desktop Infrastructure OverviewVirtual Desktop Infrastructure Overview
Virtual Desktop Infrastructure Overviewkoesteruk22
 
Advanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAdvanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAngelo Corsaro
 
Virtualization using VMWare Workstation
Virtualization using VMWare WorkstationVirtualization using VMWare Workstation
Virtualization using VMWare WorkstationHitesh Gupta
 
Comparison of MQTT and DDS as M2M Protocols for the Internet of Things
Comparison of MQTT and DDS as M2M Protocols for the Internet of ThingsComparison of MQTT and DDS as M2M Protocols for the Internet of Things
Comparison of MQTT and DDS as M2M Protocols for the Internet of ThingsReal-Time Innovations (RTI)
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with TerraformTim Berry
 

La actualidad más candente (20)

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 DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part II
 
DDS in Action -- Part I
DDS in Action -- Part IDDS in Action -- Part I
DDS in Action -- Part I
 
DDS Tutorial -- Part I
DDS Tutorial -- Part IDDS Tutorial -- Part I
DDS Tutorial -- Part I
 
DDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardDDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing Standard
 
Zenoh: The Genesis
Zenoh: The GenesisZenoh: The Genesis
Zenoh: The Genesis
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and SimulinkApplying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
 
Real time simulation with HLA and DDS
Real time simulation with HLA and DDSReal time simulation with HLA and DDS
Real time simulation with HLA and DDS
 
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
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
 
Db2 Warehouse セッション資料 db tech showcase
Db2 Warehouse セッション資料 db tech showcase Db2 Warehouse セッション資料 db tech showcase
Db2 Warehouse セッション資料 db tech showcase
 
Communication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeCommunication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/Subscribe
 
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
 
클라우드 네이티브 데이터베이스 서비스로 Oracle RAC 전환 - 김지훈 :: AWS 클라우드 마이그레이션 온라인
클라우드 네이티브 데이터베이스 서비스로 Oracle RAC 전환 - 김지훈 :: AWS 클라우드 마이그레이션 온라인클라우드 네이티브 데이터베이스 서비스로 Oracle RAC 전환 - 김지훈 :: AWS 클라우드 마이그레이션 온라인
클라우드 네이티브 데이터베이스 서비스로 Oracle RAC 전환 - 김지훈 :: AWS 클라우드 마이그레이션 온라인
 
Virtual Desktop Infrastructure Overview
Virtual Desktop Infrastructure OverviewVirtual Desktop Infrastructure Overview
Virtual Desktop Infrastructure Overview
 
Advanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAdvanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part I
 
Virtualization using VMWare Workstation
Virtualization using VMWare WorkstationVirtualization using VMWare Workstation
Virtualization using VMWare Workstation
 
Comparison of MQTT and DDS as M2M Protocols for the Internet of Things
Comparison of MQTT and DDS as M2M Protocols for the Internet of ThingsComparison of MQTT and DDS as M2M Protocols for the Internet of Things
Comparison of MQTT and DDS as M2M Protocols for the Internet of Things
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with Terraform
 

Destacado

Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAngelo 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
 
Classical Distributed Algorithms with DDS
Classical Distributed Algorithms with DDSClassical Distributed Algorithms with DDS
Classical 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
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part IAngelo 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
 
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
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with VortexAngelo Corsaro
 
Building Reactive Applications with DDS
Building Reactive Applications with DDSBuilding Reactive Applications with DDS
Building Reactive Applications with DDSAngelo Corsaro
 
Introducing Vortex Lite
Introducing Vortex LiteIntroducing Vortex Lite
Introducing Vortex LiteAngelo Corsaro
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service TutorialAngelo 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
 
Harvard vs Von Neumann Architecture
Harvard vs Von Neumann ArchitectureHarvard vs Von Neumann Architecture
Harvard vs Von Neumann ArchitectureProject Student
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsAngelo Corsaro
 
Jules Cheret (1836-1933) y sus contemporáneos
Jules Cheret (1836-1933) y sus contemporáneosJules Cheret (1836-1933) y sus contemporáneos
Jules Cheret (1836-1933) y sus contemporáneosalmudenaresad
 

Destacado (20)

Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part II
 
10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS
 
Classical Distributed Algorithms with DDS
Classical Distributed Algorithms with DDSClassical Distributed Algorithms with DDS
Classical 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é
 
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
 
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
 
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
 
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
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
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
 
Harvard vs Von Neumann Architecture
Harvard vs Von Neumann ArchitectureHarvard vs Von Neumann Architecture
Harvard vs Von Neumann Architecture
 
PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming Ruminations
 
Jules Cheret (1836-1933) y sus contemporáneos
Jules Cheret (1836-1933) y sus contemporáneosJules Cheret (1836-1933) y sus contemporáneos
Jules Cheret (1836-1933) y sus contemporáneos
 

Similar a 20 Tips for OpenSplice Newbies

Best practices for long-term support and security of the device-tree
Best practices for long-term support and security of the device-treeBest practices for long-term support and security of the device-tree
Best practices for long-term support and security of the device-treeAlison Chaiken
 
How Secure Is Your Container? ContainerCon Berlin 2016
How Secure Is Your Container? ContainerCon Berlin 2016How Secure Is Your Container? ContainerCon Berlin 2016
How Secure Is Your Container? ContainerCon Berlin 2016Phil Estes
 
Docker London: Container Security
Docker London: Container SecurityDocker London: Container Security
Docker London: Container SecurityPhil Estes
 
RH302 Exam-Red Hat Linux Certification
RH302 Exam-Red Hat Linux CertificationRH302 Exam-Red Hat Linux Certification
RH302 Exam-Red Hat Linux CertificationIsabella789
 
RH302 Exam-Red Hat Linux Certification
RH302 Exam-Red Hat Linux CertificationRH302 Exam-Red Hat Linux Certification
RH302 Exam-Red Hat Linux CertificationIsabella789
 
Going to Mars with Groovy Domain-Specific Languages
Going to Mars with Groovy Domain-Specific LanguagesGoing to Mars with Groovy Domain-Specific Languages
Going to Mars with Groovy Domain-Specific LanguagesGuillaume Laforge
 
Groovy Domain Specific Languages - SpringOne2GX 2012
Groovy Domain Specific Languages - SpringOne2GX 2012Groovy Domain Specific Languages - SpringOne2GX 2012
Groovy Domain Specific Languages - SpringOne2GX 2012Guillaume Laforge
 
Open splicedds espercep-webinar
Open splicedds espercep-webinarOpen splicedds espercep-webinar
Open splicedds espercep-webinarTomasz Waszczyk
 
RH-302 Exam-Red Hat Certified Engineer on Redhat Enterprise Linux 4 (Labs)
RH-302 Exam-Red Hat Certified Engineer on Redhat Enterprise Linux 4 (Labs)RH-302 Exam-Red Hat Certified Engineer on Redhat Enterprise Linux 4 (Labs)
RH-302 Exam-Red Hat Certified Engineer on Redhat Enterprise Linux 4 (Labs)Isabella789
 
Using puppet
Using puppetUsing puppet
Using puppetAlex Su
 
Linux Survival Kit for Proof of Concept & Proof of Technology
Linux Survival Kit for Proof of Concept & Proof of TechnologyLinux Survival Kit for Proof of Concept & Proof of Technology
Linux Survival Kit for Proof of Concept & Proof of TechnologyNugroho Gito
 
OSDC 2016 - Interesting things you can do with ZFS by Allan Jude&Benedict Reu...
OSDC 2016 - Interesting things you can do with ZFS by Allan Jude&Benedict Reu...OSDC 2016 - Interesting things you can do with ZFS by Allan Jude&Benedict Reu...
OSDC 2016 - Interesting things you can do with ZFS by Allan Jude&Benedict Reu...NETWAYS
 
Tech talk Introduction to containers
Tech talk Introduction to containersTech talk Introduction to containers
Tech talk Introduction to containersViliamPucik
 
PacSec2007: TOMOYO Linux: A Practical Method to Understand and Protect Your O...
PacSec2007: TOMOYO Linux: A Practical Method to Understand and Protect Your O...PacSec2007: TOMOYO Linux: A Practical Method to Understand and Protect Your O...
PacSec2007: TOMOYO Linux: A Practical Method to Understand and Protect Your O...Toshiharu Harada, Ph.D
 
Containers for Science and High-Performance Computing
Containers for Science and High-Performance ComputingContainers for Science and High-Performance Computing
Containers for Science and High-Performance ComputingDmitry Spodarets
 
DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...
DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...
DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...Hakka Labs
 
Useful Linux and Unix commands handbook
Useful Linux and Unix commands handbookUseful Linux and Unix commands handbook
Useful Linux and Unix commands handbookWave Digitech
 
Python mongo db-training-europython-2011
Python mongo db-training-europython-2011Python mongo db-training-europython-2011
Python mongo db-training-europython-2011Andreas Jung
 

Similar a 20 Tips for OpenSplice Newbies (20)

Best practices for long-term support and security of the device-tree
Best practices for long-term support and security of the device-treeBest practices for long-term support and security of the device-tree
Best practices for long-term support and security of the device-tree
 
How Secure Is Your Container? ContainerCon Berlin 2016
How Secure Is Your Container? ContainerCon Berlin 2016How Secure Is Your Container? ContainerCon Berlin 2016
How Secure Is Your Container? ContainerCon Berlin 2016
 
Docker London: Container Security
Docker London: Container SecurityDocker London: Container Security
Docker London: Container Security
 
RH302 Exam-Red Hat Linux Certification
RH302 Exam-Red Hat Linux CertificationRH302 Exam-Red Hat Linux Certification
RH302 Exam-Red Hat Linux Certification
 
RH302 Exam-Red Hat Linux Certification
RH302 Exam-Red Hat Linux CertificationRH302 Exam-Red Hat Linux Certification
RH302 Exam-Red Hat Linux Certification
 
Going to Mars with Groovy Domain-Specific Languages
Going to Mars with Groovy Domain-Specific LanguagesGoing to Mars with Groovy Domain-Specific Languages
Going to Mars with Groovy Domain-Specific Languages
 
Groovy Domain Specific Languages - SpringOne2GX 2012
Groovy Domain Specific Languages - SpringOne2GX 2012Groovy Domain Specific Languages - SpringOne2GX 2012
Groovy Domain Specific Languages - SpringOne2GX 2012
 
Open splicedds espercep-webinar
Open splicedds espercep-webinarOpen splicedds espercep-webinar
Open splicedds espercep-webinar
 
RH-302 Exam-Red Hat Certified Engineer on Redhat Enterprise Linux 4 (Labs)
RH-302 Exam-Red Hat Certified Engineer on Redhat Enterprise Linux 4 (Labs)RH-302 Exam-Red Hat Certified Engineer on Redhat Enterprise Linux 4 (Labs)
RH-302 Exam-Red Hat Certified Engineer on Redhat Enterprise Linux 4 (Labs)
 
DDS Made Simple
DDS Made SimpleDDS Made Simple
DDS Made Simple
 
Using puppet
Using puppetUsing puppet
Using puppet
 
Linux Survival Kit for Proof of Concept & Proof of Technology
Linux Survival Kit for Proof of Concept & Proof of TechnologyLinux Survival Kit for Proof of Concept & Proof of Technology
Linux Survival Kit for Proof of Concept & Proof of Technology
 
OSDC 2016 - Interesting things you can do with ZFS by Allan Jude&Benedict Reu...
OSDC 2016 - Interesting things you can do with ZFS by Allan Jude&Benedict Reu...OSDC 2016 - Interesting things you can do with ZFS by Allan Jude&Benedict Reu...
OSDC 2016 - Interesting things you can do with ZFS by Allan Jude&Benedict Reu...
 
Tech talk Introduction to containers
Tech talk Introduction to containersTech talk Introduction to containers
Tech talk Introduction to containers
 
PacSec2007: TOMOYO Linux: A Practical Method to Understand and Protect Your O...
PacSec2007: TOMOYO Linux: A Practical Method to Understand and Protect Your O...PacSec2007: TOMOYO Linux: A Practical Method to Understand and Protect Your O...
PacSec2007: TOMOYO Linux: A Practical Method to Understand and Protect Your O...
 
OLUG_xen.ppt
OLUG_xen.pptOLUG_xen.ppt
OLUG_xen.ppt
 
Containers for Science and High-Performance Computing
Containers for Science and High-Performance ComputingContainers for Science and High-Performance Computing
Containers for Science and High-Performance Computing
 
DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...
DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...
DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...
 
Useful Linux and Unix commands handbook
Useful Linux and Unix commands handbookUseful Linux and Unix commands handbook
Useful Linux and Unix commands handbook
 
Python mongo db-training-europython-2011
Python mongo db-training-europython-2011Python mongo db-training-europython-2011
Python mongo db-training-europython-2011
 

Más de Angelo Corsaro

zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data FabricAngelo 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: 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
 
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
 
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 AgeAngelo 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
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security StandardAngelo 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
 

Más de Angelo Corsaro (20)

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
 
DDS In Action Part II
DDS In Action Part IIDDS In Action Part II
DDS In Action Part II
 

Último

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
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
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
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
 
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
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
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
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Último (20)

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
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
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
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
 
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)
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
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
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 

20 Tips for OpenSplice Newbies

  • 1. 20 Tips for OpenSplice Newbies Angelo Corsaro, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com
  • 3. Tip #0 Domains, Partitions, Topics Domain (e.g. Domain 123) ¨ All DDS applications publish Copyright  2010,  PrismTech  –    All  Rights  Reserved. and subscribe data on a Partition belonging to a given domain Partitions (e.g. Partition “Telemetry”) ¨ Partitions are defined by means for strings and can Topic Instances/ be matched with regular Samples expressions ¨ If not explicitly specified the default partition in the default domain is automatically chosen
  • 4. Tip #0 Partitions Matching "building-1.floor-3.room-51" Copyright  2010,  PrismTech  –    All  Rights  Reserved. "building-1.floor-1.room-*" ... building-1.floor-3.room-5 ... ¨ Partitions are defined by means building-1.floor-1.room-111 building-1.floor15-.room-51 for strings and can be matched with building-1.floor-3.room-11 regular building-1.floor-1.room-1 building-1.floor-10.room-100 expressions] ... "building-1.floor-*.room-11?" Domain
  • 6. Tip #1 Choosing a Domain ¨ In OpenSplice DDS v5.x a domain is selected by: Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ Defining the OSPL_URI environment variable ¨ Passing a URI pointing at the the domain XML configuration file at OpenSplice startup ¨ Passing the URI of the configuration file as a string parameter of the DomainParticipantFactory::create_participant method ¨ Passing the name of the domain as specified in the configuration file to the DomainParticipantFactory::create_participant method ¨ Passing the empty string to represent the default domain to the DomainParticipantFactory::create_participant method
  • 7. Tip #1 Choosing a Domain Domain specified via URI Copyright  2010,  PrismTech  –    All  Rights  Reserved. Defining Domain Configuration at Startup dpf.create_participant( “file:///some/path/myospl.xml”, $ ospl start file:///some/path/myospl.xml qos, listener, mask); Default Domain dpf.create_participant( Domain specified via a Domain Name “”, qos, dpf.create_participant( listener, “MyDomainNameAsSpecifiedOnTheXMLFile”, mask); qos, listener, mask);
  • 8. Tip #1 Domains on OpenSplice v6.x ¨ The DDS specification did not originally define the type for the Copyright  2010,  PrismTech  –    All  Rights  Reserved. DomainId, as a result vendors where free to choose their on types ¨ As the DDSI/RTPS specification defines a DomainId with and integer it makes sense to uniform the DDS API to use an integer DomainID ¨ As a result, starting with OpenSplice DDS the domain will be selected specifying its associated id: dpf.create_participant( 15, qos, listener, mask);
  • 9. Tip #2 Start OpenSplice First Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ OpenSplice v5.x runs by default on a shared/ memory + daemon configuration ¨ As such, if you forget to start the infrastructure your application will fail at start up ¨ Thus always recall to run: $ ospl start
  • 10. Tip #3 Shared Memory Size OpenSplice DDS shared memory size is defined in its Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ configuration file. The size defined by the default configuration file is 10MBytes ¨ Beware that different OS have different limitations w.r.t. the maximum shared memory segment that can be allocated ¨ If you want to go beyond the OS limits you need to change the configuration of your kernel
  • 11. Tip #3 Linux ¨ The default value for the maximum shared memory segment is 32MBytes Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ This default can be changed in several ways (1) Adding this line to your /etc/rc.d/rc.local file: echo “your_max_shared_memory_size” > /proc/sys/kernel/shmmax (2) Changing the settings for the sys-limits (save changes on /etc/ sysctl.conf to maintain them across reboots): $ sysctl -w kernel.shmmax=yourMaxValue
  • 12. Tip #3 Windows The default maximum size for Shared Memory Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ segments on Windows is 2GB ¨ To exend it, say to 3GB, add the /3GB the boot.ini as shown below: [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition (1)WINDOWS="Windows NT Workstation Version 4.00" /3GB
  • 14. Tip #4 Topic Types & Keys Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ Topic Types can define some of their attributes as keys ¨ Yet, even when a Topic type does not define a key the keylist directive has to be provided -- just to tell the IDL compiler that this is a topic
  • 15. Tip #4 Topic Types & Keys Keyful Keyless Copyright  2010,  PrismTech  –    All  Rights  Reserved. enum TemperatureScale { CELSIUS, FAHRENHEIT, struct UniversalConstants { KELVIN double PI; }; double e; // Nepero Number double g; // Gravitational Constant struct TempSensorType { double NA; // Avogadro Number short id; double F; // Faraday Constant float temp; double K; // Boltzman Constant float hum; double c; // Light Speed TemperatureScale scale; }; }; #pragma keylist UniversalConstants #pragma keylist TempSensorType id
  • 16. Tip #5 Topic Instances Copyright  2010,  PrismTech  –    All  Rights  Reserved. enum TemperatureScale { CELSIUS, Writer Reader FAHRENHEIT, KELVIN }; 2 26.0 70.0 CELSIUS 1 26.0 70.0 CELSIUS struct TempSensorType { 1 26.0 70.0 CELSIUS 2 26.0 70.0 CELSIUS short id; float temp; float hum; TemperatureScale scale; }; #pragma keylist TempSensorType
  • 17. Tip #5 Topic Instances Copyright  2010,  PrismTech  –    All  Rights  Reserved. enum TemperatureScale { CELSIUS, Writer Reader FAHRENHEIT, KELVIN }; 2 26.0 70.0 CELSIUS struct TempSensorType { 1 26.0 70.0 CELSIUS 2 26.0 70.0 CELSIUS 1 26.0 70.0 CELSIUS short id; float temp; float hum; TemperatureScale scale; }; #pragma keylist TempSensorType id
  • 18. Tip #6 Topic Instances Lifecycle struct VehiclePosition { string plate; Copyright  2010,  PrismTech  –    All  Rights  Reserved. long x; long y; }; com.myco.VPos #pragma keylist VehiclePosition plate struct VehiclePosition { string plate; long x; long y; }; #pragma keylist VehiclePosition com.myco.VPos
  • 19. Tip #6 Topic Instances Lifecycle struct VehiclePosition { string plate; New Copyright  2010,  PrismTech  –    All  Rights  Reserved. long x; “A01” 100 200 long y; }; com.myco.VPos #pragma keylist VehiclePosition plate struct VehiclePosition { string plate; long x; long y; New }; #pragma keylist VehiclePosition “A01” 100 200 com.myco.VPos
  • 20. Tip #6 Topic Instances Lifecycle struct VehiclePosition { string plate; New Copyright  2010,  PrismTech  –    All  Rights  Reserved. long x; “A01” 100 200 long y; }; New #pragma keylist VehiclePosition plate “B41” 57 31 com.myco.VPos struct VehiclePosition { string plate; long x; long y; }; #pragma keylist VehiclePosition “B41” 57 31 “A01” 100 200 com.myco.VPos
  • 21. Tip #6 Topic Instances Lifecycle struct VehiclePosition { string plate; New Copyright  2010,  PrismTech  –    All  Rights  Reserved. long x; “A01” 110 210 “A01” 100 200 long y; }; New #pragma keylist VehiclePosition plate “B41” 57 31 com.myco.VPos struct VehiclePosition { string plate; long x; long y; }; #pragma keylist VehiclePosition “A01” 110 210 “B41” 57 31 “A01” 100 200 com.myco.VPos
  • 22. Tip #6 Topic Instances Lifecycle New Copyright  2010,  PrismTech  –    All  Rights  Reserved. “A01” 120 220 “A01” 110 210 “A01” 100 200 New “B41” 57 31 com.myco.VPos “A01” 120 220 “A01” 110 210 “B41” 57 31 “A01” 100 200 com.myco.VPos
  • 23. Tip #6 Topic Instances Lifecycle New Copyright  2010,  PrismTech  –    All  Rights  Reserved. “A01” 120 220 “A01” 110 210 “A01” 100 200 New “B41” 47 19 “B41” 57 31 com.myco.VPos “B41” 47 19 “A01” 120 220 “A01” 110 210 “B41” 57 31 “A01” 100 200 com.myco.VPos
  • 24. Tip #6 Topic Instances Lifecycle New Copyright  2010,  PrismTech  –    All  Rights  Reserved. “A01” 120 220 “A01” 110 210 “A01” 100 200 New “B41” Disposed - - “B41” 47 19 “B41” 57 31 com.myco.VPos “B41” 47 19 “A01” 120 220 “A01” 110 210 “B41” 57 31 “A01” 100 200 com.myco.VPos
  • 25. Tip #7 Default Lifecycle Settings The WriterDataLifecycle controls when instances are Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ disposed. By default DDS disposes unregistered instances ¨ Automatically disposing an instance perhaps is not what your want to do when terminating your application, as this would remove persistent data for the given instance!
  • 26. QoS
  • 27. Tip #8 Understand the QoS Model ¨ DDS defines 22 QoS DURABILITY LIVELINESS DEST. ORDER TIME-BASED FILTER policies that can be HISTORY OWENERSHIP PARTITION RESOURCE LIMITS Copyright  2010,  PrismTech  –    All  Rights  Reserved. LIFESPAN OWN. STRENGTH PRESENTATION applied to RELIABILITY DW LIFECYCLE communication USER DATA DEADLINE DR LIFECYCLE entities to control their TOPIC DATA GROUP DATA LATENCY BUDGET TRANSPORT PRIO ENTITY FACTORY local as well as end- to-end behaviour RxO QoS Local QoS ¨ Most of the QoS Policies that control an end-to-end property follow the so-called Request vs. Offered (RxO) Model based on which the QoS requested by the Consumer should not exceed the QoS Provided by the Producer
  • 28. Tip #9 History + Reliability Interplay ¨ The History QoS controls the number of samples that Copyright  2010,  PrismTech  –    All  Rights  Reserved. are maintained by DDS for a given topic ¨ DDS can keep the last n samples or keep all samples up to when they are not taken by the application ¨ The History setting has an impact on the reliability of data delivery as perceived by the application. Thus beware of your settings!
  • 29. Tip #9 History + Reliability Interplay struct Counter { QoS Settings int cID; Reliability = Reliable Copyright  2010,  PrismTech  –    All  Rights  Reserved. int count; }; #pragma keylist Counter cID History = KeepLast(1) History Depth = 1 History Depth = 1 (DDS Default) (DDS Default) Network 1 1 1 2 DataReader 2 1 1 2 2 3 DataWriter 3 1 2 2 2 3 3 1 Topic Topic DataReader Cache DataWriter Cache
  • 30. Tip #9 History + Reliability Interplay struct Counter { QoS Settings int cID; Reliability = Reliable Copyright  2010,  PrismTech  –    All  Rights  Reserved. int count; }; #pragma keylist Counter cID History = KeepLast(1) History Depth = 1 History Depth = 1 (DDS Default) (DDS Default) Network 1 2 1 2 DataReader 2 2 2 3 DataWriter 3 1 2 3 3 1 Topic Topic DataReader Cache DataWriter Cache
  • 31. Tip #9 History + Reliability Interplay struct Counter { QoS Settings int cID; Reliability = Reliable Copyright  2010,  PrismTech  –    All  Rights  Reserved. int count; }; #pragma keylist Counter cID History = KeepLast(1) History Depth = 1 History Depth = 1 (DDS Default) (DDS Default) Network 1 2 1 2 DataReader 2 3 2 3 DataWriter 3 1 3 1 Topic Topic DataReader Cache DataWriter Cache
  • 32. Tip #7 #10 Define Resource Limits ¨ DDS Provides a QoS that allow to control the amount of resources used by Copyright  2010,  PrismTech  –    All  Rights  Reserved. DataReaders and DataWriters ¨ By default, DDS does not imposes any limit, with the results that if you have a buggy application or an asymmetry in your system you might end-up consuming unbounded amount of memory -- and in the OpenSplice DDS case filling the Shared Memory ¨ To avoid this problem, always set appropriate Resource Limits for your application by defining: ¨ max_samples ¨ max_instances ¨ max_samples_per_instance
  • 34. Tip #11 Read vs. Take struct Counter { int cID; QoS Settings int count; ¨ DataReader::read }; iterates over the available History = KeepLast(k) Copyright  2010,  PrismTech  –    All  Rights  Reserved. #pragma keylist Counter cID sample instances ¨ Samples are not removed from the local cache as 1 1 1 2 1 3 1 4 result of a read DataReader 2 1 2 2 2 3 3 1 3 2 3 3 3 4 3 5 ¨ Read samples can be Topic read again, by accessing the cache with the Samples Read Samples not Read proper options (more DataReader Cache later)
  • 35. Tip #11 Read vs. Take struct Counter { int cID; QoS Settings int count; ¨ DataReader::read }; iterates over the available History = KeepLast(k) Copyright  2010,  PrismTech  –    All  Rights  Reserved. #pragma keylist Counter cID sample instances ¨ Samples are not removed from the local cache as 1 1 1 2 1 3 1 4 result of a read DataReader 2 1 2 2 2 3 3 1 3 2 3 3 3 4 3 5 ¨ Read samples can be Topic read again, by accessing Samples not Read the cache with the Samples Read proper options (more DataReader Cache later)
  • 36. Tip #11 Read vs. Take struct Counter { int cID; QoS Settings int count; ¨ DataReader::read }; iterates over the available History = KeepLast(k) Copyright  2010,  PrismTech  –    All  Rights  Reserved. #pragma keylist Counter cID sample instances ¨ Samples are not removed from the local cache as 1 1 1 2 1 3 1 4 result of a read DataReader 2 1 2 2 2 3 3 1 3 2 3 3 3 4 3 5 ¨ Read samples can be Topic read again, by accessing Samples Read Samples not Read the cache with the proper options (more DataReader Cache later)
  • 37. Tip #11 Read vs. Take struct Counter { int cID; QoS Settings int count; }; ¨ DataReader::take History = KeepLast(k) Copyright  2010,  PrismTech  –    All  Rights  Reserved. #pragma keylist Counter cID iterates over the available sample instances 1 1 1 2 1 3 1 4 Taken Samples are 2 1 2 2 2 3 ¨ DataReader 3 1 3 2 3 3 3 4 3 5 removed from the Topic local cache as result Samples not Taken of a take DataReader Cache
  • 38. Tip #11 Read vs. Take struct Counter { int cID; QoS Settings int count; }; ¨ DataReader::take History = KeepLast(k) Copyright  2010,  PrismTech  –    All  Rights  Reserved. #pragma keylist Counter cID iterates over the available sample instances 1 2 1 3 1 4 Taken Samples are 2 2 2 3 ¨ DataReader 3 2 3 3 3 4 3 5 removed from the Topic local cache as result Samples not Taken of a take DataReader Cache
  • 39. Tip #11 Read vs. Take struct Counter { int cID; QoS Settings int count; }; ¨ DataReader::take History = KeepLast(k) Copyright  2010,  PrismTech  –    All  Rights  Reserved. #pragma keylist Counter cID iterates over the available sample instances 1 3 1 4 Taken Samples are 2 3 ¨ DataReader 3 3 3 4 3 5 removed from the Topic local cache as result Samples not Taken of a take DataReader Cache
  • 40. Tip #12 Sample, Instance, View State History Depth = 2 ¨ Along with data samples, DataReaders provides state information allowing to detect relevant Copyright  2010,  PrismTech  –    All  Rights  Reserved. 1 1 transitions in the life-cycle of data as well as data writers 2 2 3 ¨ Sample State (READ | NOT_READ): Determines DataReader SampleInfo wether a sample has already been read by this DataReader or not. 1 1 1 2 ¨ Instance State (ALIVE, NOT_ALIVE, DISPOSED). 2 2 2 3 Determines wether (1) writer exist for the specific 3 1 instance, or (2) no matched writers are currently Samples available, or (3) the instance has been disposed Topic ¨ View State (NEW, NOT_NEW). Determines wether this is the first sample of a new (or re-born) instance DataReader Cache
  • 41. Tip #13 Beware of Invalid Samples! ¨ For each data sample accessed via a read or take Copyright  2010,  PrismTech  –    All  Rights  Reserved. DDS provides you with a SampleInfo ¨ The SampleInfo contains meta-information about the Sample, such as timestamp, lifecycle information, etc., but most importantly tells you if the data is valid or not! ¨ Data is not valid, when the sample you are receiving notifies things like an instance being unregistered or disposed
  • 42. Tip #14 Reading Only “Fresh” Data Copyright  2010,  PrismTech  –    All  Rights  Reserved. dr.read(samples, infos, LENGTH_UNLIMITED, // read all available samples NOT_READ_SAMPLE_STATE, ANY_VIEW_STATE, ALIVE_INSTANCE_STATE);
  • 43. Tip #15 Reading All Data Copyright  2010,  PrismTech  –    All  Rights  Reserved. dr.read(samples, infos, LENGTH_UNLIMITED, // read all available samples ANY_SAMPLE_STATE, ANY_VIEW_STATE, ALIVE_INSTANCE_STATE);
  • 44. Tip #16 Getting Everything Copyright  2010,  PrismTech  –    All  Rights  Reserved. dr.read(samples, infos, LENGTH_UNLIMITED, // read all available samples ANY_SAMPLE_STATE, ANY_VIEW_STATE, ANY_INSTANCE_STATE); NOTE: As explained on the Tip #13 in this case you might get invalid data samples, thus have to check on their validity via the SampleInfo.valid_data attribute
  • 45. Tip #17 Status vs. Read Condition Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ Both a Status as well as a Read Condition can be used to wait for data to be available on a DataReader ¨ The main difference is that a ReadCondition allows to set the exact SAMPLE, VIEW and INSTANCE status for which the condition should trigger, while the StatusCondition triggers when a sample is received
  • 46. Tip #17 Status vs. Read Condition Guidelines Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ If what you really care is getting a condition that triggers for the state ANY_SAMPLE_STATE, ANY_VIEW_STATE and ANY_INSTANCE_STATE than use a StatusCondition as this is more efficient than a ReadCondition ¨ If you are interested in having a condition that triggers for specific a status then use the ReadCondition
  • 48. Tip #18 Return Memory Loans Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ The DataReader read/take allocate loan memory to the application when the length of the containers passed for storing samples and info is zero ¨ In this case the loaned memory must be returned via a return_loan operation!
  • 49. Return Memory Loans Tip #18 Copyright  2010,  PrismTech  –    All  Rights  Reserved.
  • 50. Tip #19 Beware of Strings Ownership ¨ The DDS C++ API takes ownership of the string you pass Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ As a result, you need to understand when it is necessary to “duplicate” a string ¨ To this end, DDS provides the DDS:string_dup call to facilitate this task subQos.partition.name.length (1); subQos.partition.name[0] = DDS::string_dup (read_partition);
  • 52. Tip #20 Read, Write, Ask Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¨ Read the Manuals and if possible the Specification ¨ Write your own code examples ¨ Don’t be shy to ask questions on the OpenSplice mailing list
  • 53. :: Connect with Us :: Copyright  2010,  PrismTech  –    All  Rights  Reserved. ¥ opensplice.com ¥ forums.opensplice.org ¥ @acorsaro ¥ opensplice.org ¥ opensplicedds@prismtech.com ¥ @prismtech ¥ crc@prismtech.com ¥ sales@prismtech.com ¥ youtube.com/opensplicetube ¥ slideshare.net/angelo.corsaro