15.6.1.1.2. Limiting the Size of Custom Parameters
在ParticipantResourceLimitsQos
中,data_limits
提供了三个数据成员来配置自定义参数的分配行为:
max_user_data: 限制
UserDataQosPolicy
的大小,以给定字节数为准。max_properties: 限制
PartitionQosPolicy
的大小,以给定字节数为准。max_partitions: 限制
PropertyPolicyQos
的大小,以给定字节数为准。
如果这些大小被配置为非零值,将为每个参与者和端点分配足够的内存。值为零表示没有大小限制,内存将根据需要动态分配。默认情况下,使用完全动态行为。
在ParticipantResourceLimitsQos
中的content_filter提供了成员来配置内容过滤发现信息的分配行为:
expression_initial_size: 设置过滤表达式的预分配大小。
expression_parameters: 控制表达式参数列表的分配行为。有关替代方案的完整描述,请参考
ResourceLimitedContainerConfig
。接收包含超出此处最大配置参数数量的信息时,过滤将在读取器端进行。
C++ 示例
DomainParticipantQos qos;
// 将完整用户数据字段的大小固定为256个八位字节
qos.allocation().data_limits.max_user_data = 256u;
// 将完整分区字段的大小固定为256个八位字节
qos.allocation().data_limits.max_partitions = 256u;
// 将完整属性字段的大小固定为512个八位字节
qos.allocation().data_limits.max_properties = 512u;
// 设置预分配过滤表达式大小为512个字符
qos.allocation().content_filter.expression_initial_size = 512u;
// 将表达式参数的最大数量设置为4,并且其分配配置设置为固定大小
qos.allocation().content_filter.expression_parameters =
eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(4u);
XML 示例
<?xml version="1.0" encoding="UTF-8" ?>
<profiles xmlns="http://www.eprosima.com">
<participant profile_name="participant_profile_qos_parameter_resource_limit">
<rtps>
<allocation>
<max_partitions>256</max_partitions>
<max_user_data>256</max_user_data>
<max_properties>512</max_properties>
<!-- content_filter 暂不支持通过 XML 配置 -->
</allocation>
</rtps>
</participant>
</profiles>
警告
如果远程对等体宣布的数据字段不适合预分配内存,则在处理公告消息期间将触发错误。这通常意味着具有过大数据字段的远程对等体的发现消息将被丢弃,即具有过大数据字段的对等体将无法被发现。
内容由零声教学AI助手提供,问题来源于学员提问