在DDS中,可以读取写/发布者缓存

时间:2013-11-22 06:23:49

标签: data-distribution-service opensplice

这个问题涉及我目前在DDS中遇到的障碍。我能够使用各自实现提供的QueryFilter读取订阅者/读者缓存。但我现在想要读取Publisher / Writer Cache,我无法做到。

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

我使用C ++编程并使用OpenSplice,但即使是用于其他一些实现,也请回答。

1 个答案:

答案 0 :(得分:1)

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

  

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

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

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

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

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

  

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

在发布者端创建DataReader似乎完全符合您的需求。为什么要避免这种情况?