Can DDS be used to send Events?
The short answer is yes. DDS can be used to send any kind of Data, including event data.
The long answer... When people talk about events, they typically refer to two things:
- A particular schema of data (e.g. data that carries a header with specific fields that identify things like the source of the event, the timestamp, the priority, one or more classification categories, keywords, etc.).
- An infrastructure that supports a variety of filtering and dispatch mechanisms based on the header fields, the priority, the content, etc.
In DDS the application developer is responsible for defining the schema for the data. DDS does not define a built-in event type, but the application can define any desired event type and include the fields it wants. In addition the use of time-based filters and ContentFilteredTopic in DDS allows the application to perform flexible filtering of events.
DDS contains a QoS that is richer that most event-dispatching systems as it can be used to propagate not only events but also state information and sampled-data values. When used to propagate events the QoS should be configured to match the typical semantics of events. The typical settings are:
- RELIABILITY QoS kind set to RELIABLE
- HISTORY QoS kind set to KEEP_ALL
- DESTINATION_ORDER QoS kind set to BY_SOURCE_TIMESTAMP
- DEADLINE QoS period set to DURATION_INFINITE
- TIME_BASED_FILTER QoS period set to DURATION_INFINITE
In addition Domains and the PARTITION QoS can be exploited to create flexible and scalable event-distribution overlays.
