历史(HISTORY)策略确定了数据写入器和数据读取器在特定实例中如何保持样本。对于数据写入器,这些值会一直保留,直到发布者检索并成功发送给所有连接的订阅者。对于数据读取器,这些值会一直保留,直到被应用程序“获取”(take)。该策略适用于主题、数据读取器和数据写入器实体,通过它们各自QoS结构中的history成员来控制。以下是与历史QoS策略相关的IDL定义:
enum HistoryQosPolicyKind {
KEEP_LAST_HISTORY_QOS,
KEEP_ALL_HISTORY_QOS
};
struct HistoryQosPolicy {
HistoryQosPolicyKind kind;
long depth;
};
“keep all”值(KEEP_ALL_HISTORY_QOS)指定应保留该实例的所有可能样本。当指定为“keep all”并且未读样本数量等于max_samples_per_instance字段的“资源限制”时,任何传入的样本都将被拒绝。
“keep last”值(KEEP_LAST_HISTORY_QOS)指定只保留最近的depth个值。当一个数据写入器包含给定实例的depth个样本时,对该实例的新样本进行写操作会排队等待传递,并且最旧未发送的样本将被丢弃。当一个数据读取器包含给定实例的depth个样本时,任何针对该实例的传入样本都会被保留,而最旧的样本将被丢弃。
该策略默认为“keep last”,深度为1。
内容由零声教学AI助手提供,问题来源于学员提问