Got below error when I try to create participant from XML via
rti.open_connector()
rticonnextdds_connector.rticonnextdds_connector.Error: Failed to create Connector:
DDS_XMLHelper_lookupXmlTypeCode:!get XMLTypeCode
DDS_XMLRegisterType_get_type_code:!get XML TypeCode not found
DDS_FactoryXmlPlugin_assertTopic:!Assert registered type
DDS_DomainParticipantFactory_create_participant_from_config:!create participant with default parameters
RTIDDSConnector_newI:!new participant
RTIDDSConnector_EntitiesLookupList_delete:RTIDDSConnector
Any idea to fix it? Do I need to call alternative api like rti::domain::register_type in c++?
It looks like your xml configuration doesn't properly define the data type or it is not properly registered. Can you share your xml configuration?
Compare your file with this one: https://github.com/rticommunity/rticonnextdds-connector-py/blob/master/examples/python/ShapeExample.xml
Make sure the type is registered and properly assigned to a topic:
"type_ref" is the name of the type within the <types> tag, while "name" is the name to register it with. In most cases you can use the same name. Then you have to use the "name" in "register_type_ref".
Thanks for pointing the direction. Actually I plan to use the XML file generared from idl file. It seems above shape example isn't the case which define the data directly inside xml rather than IDL. Do you know how to handl this situation?
You can include additional XML files with types:
rtiddsgen -convertToXml myTypes.idl
Connector XML:
Make my day.Thanks
I have a similar issue with my connector. I converted IDLs to XML using the rtiddsgen. My resulting xml is as follow:
<types><module name=mod"><directive kind="copyC">.....</directive><struc name="SomeTypeICD"><member name="....: type="...." /><member name="..." /></struct></module></types>
When I create my reader, I'm using the name from the <struct>. However, I'm getting error from my Python.
My xml:
<qos_library name="QosLibrary">
<qos_profile name="DefaultProfile"
base_name="BuiltinQosLib::Generic.StrictReliable"
is_default_qos="true">
<participant_qos>
<participant_name>
<name>Connector Test</name>
</participant_name>
</participant_qos>
</qos_profile>
</qos_library>
<types>
<include file="/home/[file1].xml"/>
<include file="/home/[file2].xml"/>
<include file="/home/[file3].xml"/>
[more includes]
</types>
<domain_library name="DomainLibrary">
<domain name="ZeroDomain" domain_id="0">
<register_type name="SomeTypeICD" kind="dynamicData" type_ref="SomeTypeICD" />
<topic name="MyType" register_type_ref="SomeTypeICD"/>
</domain>
</domain_library>
<domain_participant_library name="ParticipantLibrary">
<domain_participant name="MyParticipant" domain_ref="DomainLibrary::ZeroDomain">
<subscriber name="MySubscriber">
<data_reader name="MyReader" topic_ref="MyType" />
</subscriber>
</domain_participant>
</domain_participant_library>
Python Script:
import rticonnextdds_connector as rti
with rti.open_connector(
config_name="ParticipantLibrary::MyParticipant",
url="rticonnext_ccs_qos.xml") as connector:
input = connector.get_input("MySubscriber::MyReader")
Opening rti connector...
DDS_XMLHelper_lookupXmlTypeCode:!get XMLTypeCode
DDS_XMLRegisterType_get_type_code:!get XML TypeCode not found
DDS_FactoryXmlPlugin_assertRegisteredType:!get Type Code from XML RegisterType "SomeTypeICD"
DDS_FactoryXmlPlugin_assertTopic:!Assert registered type