В DDS может быть прочитан кэш записи / публикации

Этот вопрос касается контрольно-пропускного пункта, с которым я в настоящее время сталкиваюсь в DDS. Я могу читать кэш подписчика / читателя, используя QueryFilter, предоставленный соответствующими реализациями. Но теперь я хочу прочитать кэш издателя / писателя и не могу этого сделать.

Вариант использования: я публикую список объектов и не хочу вести его самостоятельно, так как DDS уже делает это. На подписчике я могу получать экземпляры объектов, как я уже говорил ранее, с помощью QueryFilter. Но есть ли способ сделать это с издателем? Я хотел избежать создания подписчика на стороне издателя или поддерживать список локально, а также в GDS.

Я программирую на C++ и использую OpenSplice, но, пожалуйста, ответьте, даже если это для какой-то другой реализации.

1 ответ

Решение

Для чтения кеша на стороне DataWriter нет стандартного API DDS. Насколько я знаю, ни одна из реализаций DDS не предлагает ничего подобного.

Вариант использования: я публикую список объектов и не хочу вести его самостоятельно, поскольку DDS уже делает это [в кеше Publisher/Writer].

Ну, как пользователь, вы не можете быть уверены, что находится в кеше на стороне DataWriter. Спецификация DDS точно не определяет, что находится в этом кэше, и он не существует как таковой в API.

Цель кэша на стороне DataWriter - хранить данные, чтобы поддерживать качество обслуживания в соответствии с запросом. Для DataWriter с максимальными усилиями кэш может даже не существовать или содержать минимальную информацию об опубликованных значениях ключей. Для надежного DataWriter кэш может содержать образцы, которые находятся в процессе надежной доставки, но они могут быть удалены после доставки. Для надежного энергонезависимого DataWriter в кеше могут содержаться все образцы, которые должны быть доступны для читателей, присоединяющихся к лату.

Я говорю " возможно", потому что все зависит от того, как реализован продукт.

Единственный метод, связанный с кэшем на стороне DataWriter, это lookup_instance(),

Я хотел избежать создания подписчика на стороне издателя или поддерживать список локально, а также в GDS.

Создание DataReader на стороне издателя, кажется, делает именно то, что вам нужно. Почему вы хотите избежать этого?

Другие вопросы по тегам