这个问题是关于我目前在DDS面临的一个障碍。我能够使用各个实现提供的QueryFilter来读取订阅者/阅读器缓存。但是我现在想读Publisher/Writer,但是我不能这样做。
用例是我正在发布一个对象列表,并且不希望自己在本地维护一个列表,因为DDS已经在这样做了。在订阅服务器上,我可以使用QueryFilter获取对象实例,正如我前面所说的那样。但有什么办法可以让出版商这么做吗?我希望避免在发布服务器端创建订阅服务器,或者在本地和GDS中维护列表。
我正在用C++进行编程,并使用OpenSplice,但请回答,即使是为了其他实现。
发布于 2013-11-22 12:23:41
目前还没有用于读取DataWriter端缓存的DDS标准API。据我所知,没有一个DDS实现提供类似的功能。
用例是我正在发布一个对象列表,并且不希望自己在本地维护一个列表,因为DDS已经在Publisher/Writer缓存中这样做了。
作为用户,您无法确定DataWriter端缓存中的内容。DDS规范没有确切地指定缓存中的内容,而且API中也不存在这样的规范。
DataWriter端缓存的目的是存储数据,以支持所请求的服务质量。对于最有效的DataWriter,缓存甚至可能不存在,或者包含有关发布的键值的最小信息。对于可靠的DataWriter,缓存可能包含正在可靠传递过程中的示例,但它们可能在交付后被删除。对于可靠的、非易失性的DataWriter,缓存可能包含所有需要用于加入lat的读取器的示例。
我说可能是因为这都取决于产品是如何实现的。
DataWriter端唯一与缓存相关的方法是lookup_instance()。
我希望避免在发布服务器端创建订阅服务器,或者在本地和GDS中维护列表。
在发布服务器端创建一个DataReader似乎完全可以满足您的需要。你为什么要避免那样做?
https://stackoverflow.com/questions/20138382
复制相似问题