I have some wired problems with RTI request-replay. I did the whole steps, which mentioned in the examples, and I've got nothing but some crashes. In my replier, I have set these QoS settings:
dds::domain::qos::DomainParticipantQos dpQos = dds::core::QosProvider::Default().participant_qos( rti::core::builtin_profiles::qos_lib::baseline()); dds::domain::qos::DomainParticipantFactoryQos factoryQos = dds::domain::DomainParticipant::participant_factory_qos(); factoryQos << dds::core::policy::EntityFactory::ManuallyEnable(); factoryQos->resource_limits.max_objects_per_thread(4096); dds::domain::DomainParticipant::participant_factory_qos(factoryQos); dpQos->participant_name = rti::core::policy::EntityName(program_invocation_short_name); rti::core::policy::DomainParticipantResourceLimits resource_limits_qos; resource_limits_qos.type_code_max_serialized_length(100); resource_limits_qos.type_object_max_serialized_length(20000); dpQos << resource_limits_qos; std::map<std::string, std::string> dpPropertyMap = {{"dds.transport.UDPv4.builtin.recv_socket_buffer_size", "1048576"}, {"dds.transport.UDPv4.builtin.parent.message_size_max", "65530"}, {"dds.transport.UDPv4.builtin.send_socket_buffer_size", "65530"}}; dpQos << rti::core::policy::Property(dpPropertyMap.begin(), dpPropertyMap.end()); dds::domain::DomainParticipant participant= dds::domain::DomainParticipant(domain_id, dpQos);
when I enabled participant before
rti::request::Replier<DirectoryRequest, DirectoryReply> replier(participant, "DirectoryService");
I got this runtime error.
REDAFastBufferPool_growEmptyPoolEA: !allocate buffer of 68719444224 bytes
REDAFastBufferPool_newWithNotification:!create fast buffer pool buffers
PRESTypePluginDefaultEndpointData_createWriterPool:!create writer buffer pool
PRESPsService_enableLocalEndpointWithCursor:failed to attach endpoint to typePlugin PRESPsService_enableLocalEndpoint:!enable local endpoint terminate called after throwing an instance of 'dds::core::Error' what():
REDAFastBufferPool_newWithNotification:!create fast buffer pool buffers
PRESTypePluginDefaultEndpointData_createWriterPool:!create writer buffer pool
PRESPsService_enableLocalEndpointWithCursor:failed to attach endpoint to typePlugin
PRESPsService_enableLocalEndpoint:!enable local endpoint enable entity
but if I enable the participant just right after it, it seems everything is just fine.
On the other side, my requester, I applied the same QoS as the above code and enabled the participant before it. Then I got the same runtime error.
but, when I enabled the participant after it and got this runtime error:
DDS_DataReader_create_index:not enabled terminate called after throwing an instance of 'dds::core::NotEnabledError' what():
create correlation index
Hi,
One problem is that currently a Requester or a Replier can't receive a participant that is disabled or whose EntityFactory policy is ManuallyEnable.
Another problem could be related to your data types. The buffer allocation error you see is typical of trying to use unbounded sequences or strings but not configuring the Qos properly to enable it. Is that possible?
Alex
The IDL I used is 'directory_service' which is one of the samples IDLs that are provided in examples, here is the IDL:
So, what is the proper Qos that I should use for this IDL?