3.18. QoS Mapping in XML¶
QOS definitions in XML are based on the “standard” mapping of QOS policy names and members as found in the Connext Micro documentation, plus the following additional members that are parsed by RTI MAG:
3.18.1. Domain Participant Qos QoS Mapping¶
The following mapping documents the currently implemented MAG behavior for
domain_participant_qos conversion that are additional to what Micro supported.
General behavior:
Tags present in Pro XML but not supported by Micro are ignored by MAG.
MAG emits a warning when unsupported fields are encountered.
Some fields are accepted by parser/validation, but only a subset is emitted into generated Micro configuration.
3.18.1.1. discovery_config¶
Pro XML tag |
MAG behavior |
Micro target |
|---|---|---|
|
Selects discovery kind ( |
Discovery component type |
|
Consumed |
DPDE/DPSE discovery property |
|
Consumed |
DPDE/DPSE discovery property |
|
Consumed |
DPDE/DPSE discovery property |
|
Consumed (one announcement period value is selected) |
DPDE/DPSE discovery property |
|
Consumed |
DPDE/DPSE discovery property |
|
Consumed |
DPDE/DPSE discovery property |
|
Consumed |
DPDE/DPSE discovery property |
|
Consumed for DPDE |
DPDE discovery property |
|
Consumed for DPDE |
|
|
Consolidated to one Micro value (maximum, with unlimited handling) |
|
|
Consumed for DPDE |
|
|
Consumed for DPDE |
|
|
Consumed for DPDE |
|
|
Consumed for DPDE |
|
3.18.1.2. default_unicast¶
Pro XML tag |
MAG behavior |
Micro target |
|---|---|---|
|
Converted into participant user-traffic transport/address entries |
|
Note
Transport names are normalized to internal/default names.
If no explicit user traffic is configured, MAG may populate Micro defaults (for example, UDPv4 and INTRA when available).
3.18.1.3. resource_limits¶
Pro XML tag |
MAG behavior |
Micro target |
|---|---|---|
|
Consumed |
Corresponding Micro participant resource limits field |
|
Ignored for Micro |
None |
|
Ignored for Micro |
None |
Note
For allocation_settings, max_count is the only value used by Micro.
3.18.2. Domain Participant Factory Qos QoS Mapping¶
The following mapping documents the currently implemented MAG behavior for
domain_participant_factory_qos conversion.
3.18.2.1. Top-level fields¶
Pro XML tag |
MAG behavior |
Micro target |
|---|---|---|
|
Consumed |
Factory entity factory QoS |
|
Consumed (and auto-raised if needed) |
|
|
Consumed (and auto-raised if needed) |
|
|
Used for QoS inheritance/profile resolution |
Not emitted as a Micro runtime QoS field |
|
Ignored for Micro |
None |
|
Ignored for Micro |
None |
3.18.2.2. Nested resource_limits (systemResourceLimitsQosPolicy)¶
Pro XML tag |
MAG behavior |
Micro target |
|---|---|---|
|
Consumed |
|
|
Consumed |
|
Note
Unsupported factory QoS fields are warned and ignored by MAG.
For this nested policy, MAG uses the two fields listed above.
3.18.3. Publisher QoS mapping¶
The following mapping documents the currently implemented MAG behavior for
publisher_qos conversion.
3.18.3.1. Top-level fields¶
Pro XML tag |
MAG behavior |
Micro target |
|---|---|---|
|
Used for QoS inheritance/profile resolution |
Not emitted as a Micro runtime QoS field |
|
Consumed |
|
|
Ignored for Micro — MAG emits a warning |
None |
|
Consumed — partition strings emitted as a |
|
|
Consumed — octet bytes emitted as a |
|
|
Consumed |
|
|
Ignored for Micro — MAG emits a warning |
None |
Note
Fields not in the supported set cause MAG to emit a warning and reset the field to its default value.
partition.nameandgroup_data.valueare also referenced in generated remote-publication-data structs (entities.h) for DPDE discovery matching.publisher_name.nameis used both in the generated QoS initializer macro and as part of remote publication data struct naming.
3.18.4. Subscriber QoS mapping¶
The following mapping documents the currently implemented MAG behavior for
subscriber_qos conversion.
3.18.4.1. Top-level fields¶
Pro XML tag |
MAG behavior |
Micro target |
|---|---|---|
|
Used for QoS inheritance/profile resolution |
Not emitted as a Micro runtime QoS field |
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
Note
Fields not in the supported set cause MAG to emit a warning and reset the field to its default value.
presentation.*is consumed when generating remote subscription data (entities.h) and is not part of the localDDS_SubscriberQosinitializer macro.partition.nameandgroup_data.valueare used in both the local subscriber QoS initializer macro and generated remote subscription data.
3.18.5. Topic QoS mapping¶
The following mapping documents the currently implemented MAG behavior for
topic_qos conversion.
3.18.5.1. Top-level fields¶
Pro XML tag |
MAG behavior |
Micro target |
|---|---|---|
|
Used for QoS inheritance/profile resolution |
Not emitted as a Micro runtime QoS field |
|
Consumed |
|
|
Consumed only when |
Inherited into |
|
Consumed only through Topic->Writer/Reader QoS inheritance |
Inherited into |
|
Consumed only through Topic->Writer/Reader QoS inheritance |
Inherited into |
|
Consumed only through Topic->Writer/Reader QoS inheritance |
Inherited into |
|
Consumed only through Topic->Writer/Reader QoS inheritance |
Inherited into |
|
Consumed only through Topic->Writer/Reader QoS inheritance |
Inherited into |
|
Consumed only through Topic->Writer/Reader QoS inheritance |
Inherited into |
|
Consumed only through Topic->Writer/Reader QoS inheritance |
Inherited into |
|
Consumed only through Topic->Writer/Reader QoS inheritance |
Inherited into |
|
Consumed only through Topic->Writer/Reader QoS inheritance |
Inherited into |
|
Consumed only through Topic->Writer/Reader QoS inheritance |
Inherited into |
|
Not consumed by MAG for Topic QoS conversion |
None |
|
Not consumed by MAG for Topic QoS conversion |
None |
Note
Unlike participant/publisher/subscriber QoS conversion, Topic QoS does not use a dedicated unsupported-field warning set in
ConverterUtils; unsupported Topic members that are not mapped above remain effectively unused.Topic QoS local macro generation (
topicQosinqos.h.vm) emits only management data andtopic_data.Additional Topic fields become effective only when a DataWriter/DataReader inherits from a Topic QoS profile, via
QosUtils.inheritFromTopicQos(...).
3.18.6. DataReader QoS mapping¶
The following mapping documents the currently implemented MAG behavior for
datareader_qos conversion.
3.18.6.1. Top-level fields¶
Pro XML tag |
MAG behavior |
Micro target |
|---|---|---|
|
Used for QoS inheritance/profile resolution |
Not emitted as a Micro runtime QoS field |
|
Consumed |
|
|
Ignored for Micro - MAG emits warnings |
None |
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Ignored for Micro - MAG emits warnings |
None |
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Ignored for Micro - MAG emits warnings |
None |
|
Consumed |
|
|
Consumed |
|
|
Ignored for Micro - MAG emits warnings |
None |
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Ignored for Micro - MAG emits warnings |
None |
|
Consumed |
|
|
Ignored for Micro - MAG emits warnings |
None |
|
Consumed |
|
|
Converted and consumed |
|
|
Converted and consumed |
|
|
Ignored for Micro - MAG emits warnings |
None |
|
Parsed for profile/topic matching behavior only |
Not emitted as a runtime QoS struct field |
Note
Unsupported fields are detected by
ConverterUtilsagainstVALID_DATA_READER_POLICIES; MAG warns and ignores unsupported values.unicastandmulticastare normalized intomicroTransports.enabledTransportsbySystemModelProducer.addEnabledTransports(...); the template emits the resulting transport list.content_filteris configured from thedata_readerentity-level filter (not a directdatareader_qosXML member) and is emitted throughcontentFilterQosPolicy.propertyis intentionally not emitted for DataReader QoS in current templates (propertiesQosPolicy( $null, ...)).
3.18.7. DataWriter QoS mapping¶
The following mapping documents the currently implemented MAG behavior for
datawriter_qos conversion.
3.18.7.1. Top-level fields¶
Pro XML tag |
MAG behavior |
Micro target |
|---|---|---|
|
Used for QoS inheritance/profile resolution |
Not emitted as a Micro runtime QoS field |
|
Consumed |
|
|
Ignored for Micro - MAG emits warnings |
None |
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Ignored for Micro - MAG emits warnings |
None |
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Ignored for Micro - MAG emits warnings |
None |
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Ignored for Micro - MAG emits warnings |
None |
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Consumed |
|
|
Ignored for Micro - MAG emits warnings |
None |
|
Consumed |
|
|
Not configurable from XML for MAG writer path |
Always emitted as |
|
Consumed |
|
|
Converted and consumed |
|
|
Consumed (with flow-controller name validation/normalization) |
|
|
Consumed |
|
|
Partially consumed |
|
|
Ignored for Micro - MAG emits warnings |
None |
|
Parsed for profile/topic matching behavior only |
Not emitted as a runtime QoS struct field |
Note
Unsupported fields are detected by
ConverterUtilsagainstVALID_DATA_WRITER_POLICIES; MAG warns and ignores unsupported values.unicastis normalized intomicroTransports.enabledTransportsbySystemModelProducer.addEnabledTransports(...); the template emits the resulting transport list.publish_mode.flow_controller_nameis validated bycheckFlowController(...); built-in names are accepted directly, and custom names must use the expected prefix and be backed by participant properties.propertyis emitted only for names inVALID_PROPERTIES_TO_GENERATE(viaQosUtils.microProperties(...)); other property entries are not emitted into generated C QoS structures.
3.18.8. Structural elements mapping¶
The following mapping documents the structural (non-QoS) elements from the application configuration schema and how MAG processes them.
3.18.8.1. filter and content_filter (DataReader element)¶
These define content-based filtering for DataReader subscriptions.
Schema element |
MAG behavior |
Notes |
|---|---|---|
|
Parsed and migrated to |
If both |
|
Parsed and validated; only |
MAG error if kind is not |
|
Consumed (SQL filter expression string) |
Emitted into generated remote-endpoint discovery structs |
|
Parsed and migrated to |
If both are present, MAG emits an error |
|
Consumed (parameter string array) |
Emitted alongside filter expression for runtime substitution |
Processing:
ConverterUtils.checkContentFilter(...)handles deprecation migration and validationContent filter metadata is emitted in
entities.hremote data structures viacontentFilterProperty(...)macroContent filter resource limits are configured via
DomainParticipantFactoryQos.filter_qos_policypropertiesCFT constants:
CFT_DISABLE_WRITER_FILTERING,CFT_DISABLE_BUILTIN_SQL_FILTER,CFT_FILTER_CLASS_MAX_LENGTH,CFT_FILTER_EXPRESSION_MAX_LENGTH, etc.
3.18.8.2. register_type (Domain and Participant element)¶
Type registration defines how data types are bound to topics.
Schema element |
MAG behavior |
Micro target |
|---|---|---|
|
Consumed as type identifier |
Stored in |
|
Consumed; defines the type’s global name |
Stored in |
|
Resolved against type definitions; used for type plugin lookup |
Stored in |
Processing:
All
register_typeelements are parsed intoRegisterTypeModelobjects and stored inDomainParticipantModel.registerTypesType reference resolution occurs in
SystemModelProducer.findRegisterTypeModel(...)by matchingnameorregistered_nameagainst registered types in the domainTemplates emit type plugin getters via
typePlugin()andtypePluginCPP()macros (utils.vm), which select betweenregisteredNameandtypeReffor plugin resolutionIf a topic references a type that cannot be resolved, MAG emits an error
3.18.8.3. multiplicity (Publisher, Subscriber, DataWriter, DataReader attribute)¶
The multiplicity attribute specifies how many instances of an entity to generate.
Schema attribute |
MAG behavior |
Default value |
|---|---|---|
|
Consumed as positive integer; used for resource allocation calculations |
|
Processing:
SystemModelProducerreadsmultiplicityfrom Publisher (line 2715), Subscriber (line 2905), DataWriter (line 2805), and DataReader (line 3003)ResourceLimitsUpdateruses multiplicity to calculate cumulative resource allocations:Publisher.multiplicity*DataWritercount → total writer allocationSubscriber.multiplicity*DataReadercount → total reader allocation
Each multiplied instance receives a unique name suffix in generated code
3.18.8.4. base_name and base_names (QoS profile inheritance)¶
These attributes enable profile inheritance and composition chains.
Schema element |
MAG behavior |
Notes |
|---|---|---|
|
Parsed as QoS profile reference (single inheritance) |
Format: |
|
Parsed as QoS profile reference chain (composition inheritance) |
Multiple profiles resolved in order |
Processing:
Both are handled by
QosUtils.getBaseName(...)andQosUtils.getBaseNames(...)during QoS resolutionFormat validation: base names must follow
LibraryName::ProfileNameformat (checked inQosUtils.getBaseNamesList(...))QosUtils.resolveNonProfileQos(...)performs recursive inheritance: merges base QoS values with current QoS, with current values overriding inherited onesLibrary prefix is automatically added by
QosUtils.addLibraryNameToBaseName(...)for relative profile referencesInvalid or unresolved base names generate errors during QoS resolution
3.18.8.5. topic (Domain element)¶
Topic definitions bind a data type to a topic name with optional QoS.
Schema element |
MAG behavior |
Micro target |
|---|---|---|
|
Consumed as topic identifier within domain |
Topic name used in |
|
Alternative topic name if |
Stored as topic’s display/registered name |
|
Resolved against registered types to bind topic to data type |
Type plugin lookup |
|
Parsed as optional QoS profile for topic-level defaults |
Base QoS for DataWriter/DataReader inheritance |
Processing:
All topics are parsed into
TopicModelobjects and stored per domainSystemModelProducer.findTopicModel(...)resolves topic references by name (matching againstnameorregistered_name)Topics are primarily used for QoS composition: when a
datawriter_qosordatareader_qosreferences a topic, inherited fields are merged viaQosUtils.inheritFromTopicQos(...)If a DataWriter/DataReader references a topic that cannot be resolved, MAG emits an error
Topic QoS is not directly emitted as a C runtime structure; only the resulting merged QoS (after inheritance) is emitted
3.18.8.6. data_writer (Publisher, Participant element)¶
DataWriter entity configuration.
Schema element |
MAG behavior |
Micro target |
|---|---|---|
|
Consumed as entity identifier |
Unique writer name within publisher |
|
Resource allocation multiplier (see multiplicity section above) |
Instance count for writer generation |
|
Resolved against topic definitions in domain |
Topic bound to this writer |
|
Parsed as writer-specific QoS profile |
Merged with topic QoS and emitted as |
Processing:
SystemModelProducer.createDataWriterModel(...)resolves topic references and applies QoS inheritanceTransport configuration (unicast/multicast) and publish-mode flow-controller validation occur during creation
Multiplicity is used by
ResourceLimitsUpdaterto calculate writer allocation counts
3.18.8.7. data_reader (Subscriber, Participant element)¶
DataReader entity configuration, including optional content filtering.
Schema element |
MAG behavior |
Micro target |
|---|---|---|
|
Consumed as entity identifier |
Unique reader name within subscriber |
|
Resource allocation multiplier (see multiplicity section above) |
Instance count for reader generation |
|
Resolved against topic definitions in domain |
Topic subscribed by this reader |
|
Parsed for content-filtering configuration (see filter section above) |
CFT metadata in remote endpoint data |
|
Parsed as reader-specific QoS profile |
Merged with topic QoS and emitted as |
Processing:
SystemModelProducer.createDataReaderModel(...)resolves topic references, applies QoS inheritance, and validates content filtersConverterUtils.checkContentFilter(...)is called to validate and migrate filter elementsMultiplicity is used by
ResourceLimitsUpdaterto calculate reader allocation countsContent-filter configuration gates the DomainParticipantFactory’s CFT feature flag: if any reader has a content filter,
isContentFilter()returns true
3.18.8.8. publisher (Participant element)¶
Publisher entity container for DataWriters.
Schema element |
MAG behavior |
Micro target |
|---|---|---|
|
Consumed as entity identifier |
Unique publisher name within participant |
|
Resource allocation multiplier (see multiplicity section above) |
Instance count for publisher generation |
|
Parsed as publisher-specific QoS profile |
Emitted as |
|
Each DataWriter is processed independently |
Collection of writers created for this publisher |
Processing:
SystemModelProducer.createPublisherModel(...)creates aPublisherModeland processes child DataWritersPublisher multiplicity scales the total number of publishers generated; each multiplied instance receives a unique suffix
3.18.8.9. subscriber (Participant element)¶
Subscriber entity container for DataReaders.
Schema element |
MAG behavior |
Micro target |
|---|---|---|
|
Consumed as entity identifier |
Unique subscriber name within participant |
|
Resource allocation multiplier (see multiplicity section above) |
Instance count for subscriber generation |
|
Parsed as subscriber-specific QoS profile |
Emitted as |
|
Each DataReader is processed independently |
Collection of readers created for this subscriber |
Processing:
SystemModelProducer.createSubscriberModel(...)creates aSubscriberModeland processes child DataReadersSubscriber multiplicity scales the total number of subscribers generated; each multiplied instance receives a unique suffix
3.18.8.10. domain_participant (ParticipantLibrary element)¶
Top-level DomainParticipant configuration.
Schema element |
MAG behavior |
Micro target |
|---|---|---|
|
Consumed as entity identifier |
Participant name prefix for generated code |
|
Resolved against domain library |
Binds participant to a specific domain |
|
Domain ID override (overrides domain_ref domain ID) |
Runtime participant domain ID |
|
Participant profile inheritance (not directly used for structure) |
QoS inheritance base |
|
Parsed as participant-specific QoS profile |
Emitted as |
|
Type registrations local to this participant |
Stored in participant model; supersede domain registrations |
|
Topics local to this participant |
Stored in participant model; supersede domain topics |
|
Publishers and subscribers for this participant |
Processed recursively |
|
Implicit publisher/subscriber writers and readers |
Processed with implicit entity creation |
Processing:
SystemModelProducer.createParticipantModel(...)recursively processes all child entitiesResource limits are calculated and adjusted by
ResourceLimitsUpdaterbased on entity multiplicities and nestingDiscovery configuration (DPSE or built-in) determines which metadata types are emitted in generated code
3.18.8.11. domain (DomainLibrary element)¶
Domain definition containing topic and type registrations.
Schema element |
MAG behavior |
Micro target |
|---|---|---|
|
Consumed as domain identifier within library |
Domain reference for participants |
|
Domain ID for this domain |
Runtime domain ID if not overridden |
|
Domain profile inheritance |
QoS inheritance base |
|
Type registrations available to all participants in domain |
Global type registry |
|
Topics available to all participants in domain |
Global topic registry |
Processing:
Domains provide a namespace for types and topics
Participant domain references resolve to this domain during initialization
All register types and topics in a domain are merged into participant-local registries; participant-local definitions override domain definitions
3.18.8.12. domain_library and participant_library (Root elements)¶
Top-level containers for domains and participants.
Schema element |
MAG behavior |
Micro target |
|---|---|---|
|
Library namespace; used in base_name resolution |
Automatically prepended to profile references |
|
Domain definitions |
Processed in order |
|
Participant configurations |
Processed in order; code generation targets all participants |
Processing:
Multiple domain and participant libraries can be defined
Library names are prepended to base_name references by
QosUtils.addLibraryNameToBaseName(...)All participants across all participant libraries are code-generated unless filtering is applied