1

这个问题是关于我目前在 DDS 中面临的障碍。我可以使用各自实现提供的 QueryFilter 来读取订阅者/读取器缓存。但我现在想读取 Publisher/Writer Cache 而我无法做到这一点。

用例是我正在发布一个对象列表,并且不想自己在本地维护一个列表,因为 DDS 已经在这样做了。在订阅服务器上,我可以使用 QueryFilter 获取对象实例,就像我之前所说的那样。但是发布者有什么办法吗?我想避免在发布者端创建订阅者或在本地和 GDS 中维护列表。

我正在使用 C++ 编程并使用 OpenSplice,但即使是针对其他一些实现,也请务必回答。

4

1 回答 1

1

没有 DDS 标准 API 可用于读取 DataWriter 端的缓存。据我所知,没有一个 DDS 实现提供类似的东西。

用例是我正在发布一个对象列表,并且不想自己在本地维护一个列表,因为 DDS 已经在 [在 Publisher/Writer 缓存中] 这样做了。

好吧,作为用户,您无法确定 DataWriter 端的缓存中有什么。DDS 规范没有准确指定缓存中的内容,并且它在 API 中也不存在。

DataWriter 端缓存的目的是存储数据,以支持所请求的服务质量。对于尽力而为的 DataWriter,缓存可能甚至不存在,或者包含有关已发布键值的最少信息。对于可靠的 DataWriter,缓存中可能包含正在可靠交付过程中的样本,但在交付后它们可能会被删除。对于可靠的、非易失性的 DataWriter,缓存可能包含所有需要供 lat-joining 读取器使用的样本。

我说可能是因为这完全取决于产品的实施方式。

DataWriter 端唯一与缓存相关的方法是lookup_instance().

我想避免在发布者端创建订阅者或在本地和 GDS 中维护列表。

在发布者端创建一个 DataReader 似乎正是您需要的。为什么要避免这种情况?

于 2013-11-22T12:23:41.480 回答