Connext DDS features ==================== .. py:currentmodule:: rticonnextdds_connector Because *RTI Connector* is a simplified API, it provides access to a subset of the features in *RTI Connext DDS*. In addition to the functionality described in the rest of this documentation, this section summarizes the support that *Connector* provides for some notable *Connext DDS* features. General features ~~~~~~~~~~~~~~~~ .. list-table:: General Features :widths: 7 5 25 :header-rows: 1 * - Feature - Level of support - Notes * - `Quality of Service (QoS) `__ - Partial - Most QoS policies are supported because they can be configured in XML, but those that are designed to be mutable can't be changed in *Connector*. QoS policies that require a supporting API may have limited or no support. A few examples of QoS policies that are fully supported in *Connector*: * Reliability * Durability * History * Ownership A few examples of QoS policies that are supported but can't be changed in *Connector* even though they are mutable by design and changeable in other APIs: * Partition * Lifespan * Ownership Strength * Property and User Data * Time-Based Filter A few examples of QoS policies that have limited support because they require a supporting API that is not available in *Connector*: * Batch - fully supported except that manual flushing is not available * Entity Factory - *autoenable_created_entities* can be set to *false* only for a *subscriber*, in order to enable an `Input` only when :meth:`Connector.get_input` is called. * Property - Properties can be set in XML, but they can't be looked up in *Connector* `Topic Qos `__ is not supported in *Connector*. Use DataReader QoS and DataWriter QoS directly. * - `Entity Statuses `__ - Partial - Only :meth:`Input.wait` (data available), :meth:`Input.wait_for_publications`, and :meth:`Output.wait_for_subscriptions` are supported. * - `Managing Data Instances `__ - Partial - On an ``Output``, it is possible to dispose or unregister an instance (see :meth:`Output.write`). Instances are automatically registered when first written. On an ``Input`` the instance state can be obtained, alongside the key fields of a disposed instance (see :ref:`Accessing key values of disposed samples`). Instance handles are not exposed. * - `Application Acknowledgment `__ - Partial - *DDS_APPLICATION_AUTO_ACKNOWLEDGMENT_MODE* is supported. If enabled, when a call to :meth:`Input.take` or :meth:`Input.read` is followed by another call, the second one automatically acknowledges the samples read in the first one. *DDS_APPLICATION_EXPLICIT_ACKNOWLEDGMENT_MODE* is not supported. * - `Request-Reply `__ - Partial - The correlation between two samples can be established at the application level: * The *Requester* application writes by calling :meth:`Output.write` with the parameter ``identity=A`` (the *request* sample) * The *Replier* application receives the *request* sample, obtains the ``identity`` (A), from ":attr:`SampleIterator.info` and writes a new sample with ``related_sample_identity=A`` (the *reply* sample) * The *Requester* application receives the *reply* sample, and correlates the ``related_sample_identity`` from :attr:`SampleIterator.info` with the ``identity`` it used in the first step. * - `Topic Queries `__ - Partial - ``Input`` doesn't have the API to create a *TopicQuery*, but in the configuration file a *data_writer* can enable support for *TopicQuery* so other *Connext DDS Subscribers* can query the *Connector Publisher*. * - `Zero Copy Transfer Over Shared Memory `__ - Not supported - Only available in C and C++. * - `Built-in Topics `__ - Not supported - API not available. * - `Transport Plugins `__ - Partial - The built-in transports can be configured in XML. * - Add-on Libraries (such as `Monitoring `__, `Security Plugins `__ ) - Supported - See :ref:`Loading Connext DDS Add-On Libraries`. Features related to sending data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: Features Related to Sending Data :widths: 7 5 25 :header-rows: 1 * - Feature - Level of support - Notes * - `Waiting for Acknowledgments `__ - Supported - See :meth:`Output.wait`. * - `Coherent Sets `__ - Not supported - API not available. * - `Flow Controllers `__ - Partial - Most functionality is available via XML QoS configuration. * - `Asserting Liveliness Manually `__ - Not supported - API not available. * - `Collaborative DataWriters `__ - Limited - The virtual GUID can be set per writer in XML, but not per sample. Features related to receiving data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: Features Related to Receiving Data :widths: 7 5 25 :header-rows: 1 * - Feature - Level of support - Notes * - `Content-Filtered Topics `__ - Partial - `Configurable in XML `__ but it can't be modified after creation * - `Sample Info `__ - Partial - See :attr:`SampleIterator.info` * - `Query Conditions `__ - Not supported - API not available * - `Group-Ordered Access `__ - Not supported - API not available * - `Waiting for Historical Data `__ - Not supported - API not available Features related to the type system ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: Features Related to the Type System :widths: 7 5 25 :header-rows: 1 * - Feature - Level of support - Notes * - `DDS type system `__ - Supported - *Connector* can use any DDS type. Types are defined in XML. * - `Type extensibility `__ - Supported - *Connector* supports type extensibility, including mutable types in the XML definition of types. It also supports type-consistency enforcement and sample-assignability enforcement; these checks are performed by the *RTI Connext DDS* Core. * - `Optional members `__ - Supported - See :ref:`Accessing optional members`. * - `Default values `__ - Supported - For example, to declare a default value for a member:: Now the value for *my_int* when you call :meth:`Output.write` without setting it explicitly is 20. And when you receive a data sample in an ``Input`` from a *Publisher* whose type is compatible, but doesn't have the field *my_int*, the value you receive will be 20. * - `Unbounded data `__ - Supported - To declare an unbounded sequence or string, set its max length to *-1*:: For any ``Output`` using a topic for a type with unbounded members, set the following in the ```` QoS policy:: dds.data_writer.history.memory_manager.fast_pool.pool_buffer_max_size 4096 The value *4096* is a threshold that indicates *Connext DDS* should allocate memory dynamically for data samples that exceed that size. For samples below that threshold, memory comes from pre-allocated buffers. If the unbounded member is a *key*, then in any ``Input`` that uses the type, set the following:: dds.data_reader.history.memory_manager.fast_pool.pool_buffer_max_size 4096 * - `FlatData Language Binding `__ - Not supported - However, an ``Input`` can receive data published by other *Connext DDS* applications that use FlatData. Loading Connext DDS Add-On Libraries ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *Connector* supports features that require the loading of additional *Connext DDS* libraries, such as `Monitoring `__ and `Security Plugins `__. The Monitoring and Security plugins are configured in XML, as described in the previous links. To use RTI Connext DDS add-ons you need an RTI Connext DDS installation. To configure your environment so that Connector can load these additional libraries: - Set your environment using:: $ source /resource/scripts/rtisetenv_.bash or:: > \resource\scripts\rtisetenv_.bat - Or set your system's library path to:: \lib\\ .. note:: Each version of Connector can only load add-on libraries from its corresponding Connext DDS release. You can see this correspondence in the :ref:`release notes`. For example, Connector 1.1.0 can only load Connext DDS 6.1.0 add-on libraries.