这个问题是关于我目前在DDS中面临的障碍。我能够使用各自实现提供的QueryFilter读取订阅服务器/读取器缓存。但我现在想读取发布者/编写器缓存,但我无法做到这一点。
用例是,我正在发布对象列表,不想自己在本地维护列表,因为DDS已经在做了。在订阅服务器上,我可以使用QueryFilter获取对象实例,就像我前面说的那样。但是,有什么办法可以让出版商这样做吗?我想避免在发布端创建订阅者,或者在本地和GDS中维护列表。
我用C++编程,使用OpenSplice,但请回答,即使是其他实现。
没有DDS标准API可用于读取DataWriter端的缓存。据我所知,没有一个DDS实现提供这样的功能。
用例是我正在发布对象列表,并且不想我自己在本地维护一个列表,因为DDS已经在[发布服务器/写入器缓存]中执行了。
好吧,作为用户,您不能确定DataWriter端的缓存中有什么。DDS规范并没有确切地指定缓存中的内容,而且它在API中也不存在。
DataWriter端缓存的目的是存储数据,以支持所请求的服务质量。对于尽力而为的DataWriter,缓存甚至可能不存在,或者包含有关已发布键值的最少信息。对于可靠的DataWriter,缓存可能包含正在可靠传递过程中的样本,但它们可能在传递后被删除。对于可靠的、非易失性的DataWriter,缓存可能包含所有需要用于lat加入读取器的样本。
我说可能,因为这完全取决于产品的实现方式。
DataWriter端唯一与缓存相关的方法是lookup_instance()
。
我想避免在发布端创建订阅者,或者在本地和GDS中维护该列表。
在发布端创建DataReader似乎正是您所需要的。你为什么要避免这种情况?