2013-11-22 11 views
1

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

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

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

ответ

1

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

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

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

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

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

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

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

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

+0

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

+0

Кроме того, если вы не против меня спрашиваете, связаны ли вы с любыми реализациями DDS :)? Я просто спрашиваю, так как я задал еще один вопрос, связанный с DDS, на который вы ответили, а ваши ответы углублены и понятны. – shamshu

+0

К сожалению. Пожалуйста, игнорируйте мой вопрос.Прочтите свой профиль :) – shamshu