DDS QoS - DESTINATION_ORDER

https://download.csdn.net/download/eidolon_foot/12568768

17. DESTINATION_ORDER

OpenDDS Developer's Guide(OpenDDS Version 3.14)
The DESTINATION_ORDER QoS policy controls the order in which samples within a given instance are made available to a data reader. If a history depth of one (the default) is specified, the instance will reflect the most recent value written by all data writers to that instance. Here is the IDL for the Destination Order Qos:
DESTINATION_ORDER QoS策略控制将给定实例中的样本提供给数据读取器的顺序。 如果指定的历史深度为1(默认值),则该实例将反映所有数据编写者写入该实例的最新值。 这是终点顺序Qos的IDL:
enum DestinationOrderQosPolicyKind {
BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS,
BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS
};
struct DestinationOrderQosPolicy {
DestinationOrderQosPolicyKind kind;
};
The BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS value (the default) indicates that samples within an instance are ordered in the order in which they were received by the data reader. Note that samples are not necessarily received in the order sent by the same data writer. To enforce this type of ordering, the BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS value should be used.
BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS值(默认值)指示实例中的样本按照数据读取器接收样本的顺序进行排序。 请注意,不一定按相同数据写入器发送的顺序接收样本。 要强制执行这种类型的排序,应使用BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS值。
The BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS value indicates that samples within an instance are ordered based on a timestamp provided by the data writer. It should be noted that if multiple data writers write to the same instance, care should be taken to ensure that clocks are synchronized to prevent incorrect ordering on the data reader.
BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS值指示实例内的样本是根据数据写入器提供的时间戳进行排序的。 应该注意的是,如果多个数据写入器写入同一实例,则应注意确保时钟同步,以防止在数据读取器上进行不正确的排序。
Data Distribution Service Version 1.4( formal/2015-04-10)
This policy controls how each subscriber resolves the final value of a data instance that is written by multiple DataWriter objects (which may be associated with different Publisher objects) running on different nodes.
此策略控制每个订阅者如何解析由在不同节点上运行的多个DataWriter对象(可能与不同的Publisher对象相关联)写入的数据实例的最终值。
The setting BY_RECEPTION_TIMESTAMP indicates that, assuming the OWNERSHIP policy allows it, the latest received value for the instance should be the one whose value is kept. This is the default value.
设置BY_RECEPTION_TIMESTAMP表示,假设OWNERSHIP策略允许它,则实例的最新接收值应该是保留其值的值。 这是默认值。
The setting BY_SOURCE_TIMESTAMP indicates that, assuming the OWNERSHIP policy allows it, a timestamp placed at the source should be used. This is the only setting that, in the case of concurrent same-strength DataWriter objects updating the same instance, ensures all subscribers will end up with the same final value for the instance. The mechanism to set the source timestamp is middleware dependent.
设置BY_SOURCE_TIMESTAMP表示,假设OWNERSHIP策略允许,则应使用放置在源上的时间戳。 在并发相同强度的DataWriter对象更新同一实例的情况下,这是唯一的设置,可确保所有订阅者最终获得该实例的最终值相同。 设置源时间戳记的机制取决于中间件。
The value offered is considered compatible with the value requested if and only if the inequality “offered kind >= requested kind ” evaluates to ‘TRUE.’ For the purposes of this inequality, the values of DESTINATION_ORDER kind are considered ordered such that BY_RECEPTION_TIMESTAMP < BY_SOURCE_TIMESTAMP.
当且仅当不等式“提供的种类> =请求的种类”评估为“ TRUE”时,才认为提供的值与请求的值兼容。出于这种不平等的目的,将DESTINATION_ORDER类型的值视为有序的,使得BY_RECEPTION_TIMESTAMP <BY_SOURCE_TIMESTAMP 。

用ChatGPT

《OpenDDS Developer's Guide》:

这段文本是从《OpenDDS Developer's Guide》OpenDDS版本3.14的一个部分,它讨论了DDS(数据分发服务)中的DESTINATION_ORDER(目的地顺序)QoS(服务质量)策略。这个策略用来控制给定实例内的样本数据在数据读取器中的可用顺序。下面是对文本的中文翻译及解释:
### 中文翻译:
3.2.18 目的地顺序
目的地顺序QoS策略控制在给定实例中的样本数据被数据读取器获取的顺序。如果指定的历史深度为一(默认值),那么该实例将反映所有数据写入器向该实例写入的最新值。以下是目的地顺序Qos的IDL定义:

enum DestinationOrderQosPolicyKind {
  BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS,
  BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS
};
struct DestinationOrderQosPolicy {
  DestinationOrderQosPolicyKind kind;
};

BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS(默认值)表示实例内的样本数据按照它们被数据读取器接收的顺序来排序。注意样本数据并不一定按照相同数据写入器发送的顺序被接收。要实施这种类型的排序,应该使用BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS值。
BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS值表示实例内的样本数据基于数据写入器提供的时间戳来排序。需要注意的是,如果多个数据写入器向同一个实例写入数据,应当注意保证时钟同步,以防在数据读取器上发生错误排序。
### 解释:
DESTINATION_ORDER QoS策略决定了在多个数据样本需要被读取时,它们的读取顺序。这个顺序可以基于数据到达数据读取器的时间顺序,或者数据样本的来源时间戳顺序。此策略确保了数据的一致性和顺序性,尤其是在处理时间敏感的数据时非常重要。
- **BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS**:这是默认策略,它根据数据样本到达数据读取器的时间戳来确定顺序。这意味着数据会按照数据到达的实际顺序进行处理。
- **BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS**:这个策略基于数据写入器附加到样本上的时间戳来排序。这要求系统的各个部分时钟同步,以避免由于时钟偏差引起的顺序错误。
对于一个实例,如果历史深度设置为1,则该实例只会反映最新的数据值,而不保留历史数据。当历史深度大于1时,可以根据以上两种排序方法来保留和排序历史数据。
设置这些QoS策略对于构建可靠和预见性的分布式系统是非常重要的,它有助于数据的消费者(data readers)以正确和一致的顺序接收数据样本。

《Data Distribution Service (DDS)》Version 1.4 :

这段文字是关于DDS (数据分发服务)规范版本1.4的“目标顺序”(DESTINATION_ORDER)质量服务(QoS)策略的描述,该策略管理如何解决由在不同节点上运行的多个DataWriter对象(可能与不同的Publisher对象相关联)写入的数据实例的最终值。
目标顺序QoS策略有两个设置:
1. BY_RECEPTION_TIMESTAMP:这个设置表明,在所有权(OWNERSHIP)策略允许的前提下,默认将保留最新接收到的实例值。这意味着,数据订阅者应该使用它接收到的最后一个值作为最终值。
2. BY_SOURCE_TIMESTAMP:在这个设置下,同样在所有权策略允许的前提下,将使用数据源处设置的时间戳。这是唯一能确保,在多个具有同等优先级的DataWriter对象并发更新同一个实例的情况下,所有订阅者最终得到该实例相同最终值的设置。设置源时间戳的机制取决于中间件。
两种设置之间的兼容性是基于“提供的种类 >= 请求的种类”的不等式计算结果为‘TRUE’时视为兼容。在进行这种比较时,目标顺序的种类被认为是有序的,即`BY_RECEPTION_TIMESTAMP < BY_SOURCE_TIMESTAMP`。
以下是根据以上信息的中文翻译及解释:
这个策略控制着每个订阅者如何解决由运行在不同节点上的多个DataWriter对象(这些对象可能与不同的Publisher对象关联)写入的数据实例的最终值。
BY_RECEPTION_TIMESTAMP设置指出,在所有权策略允许的情况下,默认应保留该实例最新接收到的值。这是默认值。
BY_SOURCE_TIMESTAMP设置指出,在所有权策略允许的情况下,应使用在数据源处放置的时间戳。这是唯一能保证,在并发的具有相同强度的DataWriter对象更新同一个实例的情况下,所有订阅者最终会得到实例相同的最终值的设置。设置源时间戳的机制依赖于中间件。
只有当“提供的种类 >= 请求的种类”的不等式评估结果为‘TRUE’时,所提供的值才被考虑与请求的值兼容。在此不等式中,为了比较目的,目标顺序种类被认为是有序的,即`BY_RECEPTION_TIMESTAMP < BY_SOURCE_TIMESTAMP`。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

109702008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值