3.1.2.2.6. ParticipantResourceLimitsQos
该QoS配置用于配置内部资源的分配限制和物理内存的使用。
QoS策略数据成员列表:
数据成员名称 | 类型 | 描述 |
---|---|---|
locators | RemoteLocatorsAllocationAttributes | 定义远程定位器集合的限制。 |
participants | ResourceLimitedContainerConfig | 指定参与者集合的分配行为和限制。 |
readers | ResourceLimitedContainerConfig | 指定每个参与者所依赖的阅读器集合的分配行为和限制。 |
writers | ResourceLimitedContainerConfig | 指定每个参与者所依赖的写入器集合的分配行为和限制。 |
send_buffers | SendBuffersAllocationAttributes | 定义发送缓冲区管理器的分配行为和限制。 |
data_limits | VariableLengthDataLimits | 规定可变长度数据的限制。 |
content_filter | ContentFilterProperty::AllocationConfiguration | 规定内容过滤发现信息的限制。 |
注意:此QoS策略适用于DomainParticipant
实体,无法在启用实体上更改。
RemoteLocatorsAllocationAttributes
该结构体保存远程定位器集合的限制。
结构体成员列表:
成员名称 | 类型 | 默认值 |
---|---|---|
max_unicast_locators | size_t | 4 |
max_multicast_locators | size_t | 1 |
- max_unicast_locators:控制为每个发现的远程实体保留的单播定位器最大数量。
- max_multicast_locators:控制为每个发现的远程实体保留的多播定位器最大数量,默认值通常足够,因为为一个实体添加多个多播定位器没有意义。
ResourceLimitedContainerConfig
该结构体保存资源有限集合的限制及其分配配置,可以是固定大小或动态大小。
结构体成员列表:
成员名称 | 类型 | 默认值 |
---|---|---|
initial | size_t | 0 |
maximum | size_t | std::numeric_limits |
increment | size_t | 1(动态大小),0(固定大小) |
- initial:指示在集合中预先分配元素数量。
- maximum:指定允许在集合中的最大元素数量。
- increment:当达到保留容量极限时,说明要添加多少项。
SendBuffersAllocationAttributes
该结构体保存发送缓冲区分配的限制。
结构体成员列表:
成员名称 | 类型 | 默认值 |
---|---|---|
preallocated_number /size_t = = · /上面可能存在干扰 | ||
dynamic bool false |
- preallocated_number:控制要预先分配初始发送缓冲区数量。
- dynamic:控制缓冲区管理器在没有可用发送缓冲区时如何处理。当设置为true时,将创建新的缓冲区;否则,将等待返回缓冲区。
- network_buffers_config:定义每个发送缓冲区中网络缓冲区的分配行为和限制。
VariableLengthDataLimits
该结构体保存可变长度数据的限制。
成员列表:
|成会员名|类型|默认值| |—|—|—| |max_properties |size_t |0| |max_user_data |size_t |0| |max_partitions |size_t |0|
ContentFilterProperty::AllocationConfiguration
该结构体保存与内容过滤相关发现信息的限制。
成员列表:
||类型||默认值||
expression_initial_size | size_t | 0 | |||
expression_parameters | ResourceLimitedContainerConfig | {0,100,1} |
示例代码
// 此示例仅适用于 DomainParticipant 实体
DomainParticipantQos participant_qos;
// 设置参与者资源限额集合最大大小为3,且其分配配置为固定大小
participant_qos.allocation().participants =
eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(3u);
// 设置读者资源限额集合最大大小为2,且其分配配置为固定大小
participant_qos.allocation().readers =
eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(2u);
// 设置写者资源限额集合最大大小为1,且其分配配置为固定大小
participant_qos.allocation().writers =
eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(1u);
// 设置划定数据部分最大尺寸到256
participant_qos.allocation().data_limits.max_partitions = 256u;
// 设置用户数据最大尺寸到256
participant_qos.allocation().data_limits.max_user_data = 256u;
// 设置属性数据最大尺寸到512
participant_qos.allocation().data_limits.max_properties = 512u;
// 设置预先配置过滤表达式初始尺寸到512
participant_qos.allocation().content_filter.expression_initial_size = 512u;
// 设置表达式参数最多4个,并将其分配配置设置为固定大小
participant_qos.allocation().content_filter.expression_parameters =
eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(4u);
// 使用修改后的 QoS 创建相应 DomainParticipant 实例
participant_ = factory_->create_participant(domain, participant_qos);
这个示例展示了如何设置DomainParticipant
实体的一些重要QoS属性,包括对各类资源(如读取、写入、参加者等)的具体配置,以确保性能与资源管理能够满足应用需求。
内容由零声教学AI助手提供,问题来源于学员提问