1

この質問は、私が現在 DDS で直面している障害に関するものです。それぞれの実装によって提供される QueryFilter を使用して、サブスクライバー/リーダー キャッシュを読み取ることができます。しかし、Publisher/Writer キャッシュを読みたいのですが、それができません。

使用例は、オブジェクトのリストを発行していて、DDS が既に行っているため、ローカルでリストを維持したくない場合です。サブスクライバーでは、前に述べたように、QueryFilter を使用してオブジェクト インスタンスを取得できます。しかし、パブリッシャーでこれを行う方法はありますか? パブリッシャー側でサブスクライバーを作成したり、GDS だけでなくローカルでもリストを維持したりしたかったのです。

私は C++ でプログラミングし、OpenSplice を使用していますが、他の実装であっても回答してください。

4

1 に答える 1

1

DataWriter 側でキャッシュを読み取るために使用できる DDS 標準 API はありません。私の知る限り、そのような機能を提供する DDS 実装はありません。

使用例は、オブジェクトのリストを公開していて、DDS が [パブリッシャー/ライター キャッシュで] 既に実行しているため、ローカルでリストを維持したくない場合です。

ユーザーとしては、DataWriter 側のキャッシュに何が入っているかわかりません。DDS 仕様は、そのキャッシュに何があるかを正確に指定しておらず、API には存在しません。

DataWriter 側のキャッシュの目的は、要求されたサービス品質をサポートするためにデータを格納することです。ベストエフォートの DataWriter の場合、キャッシュが存在しないか、公開されたキー値に関する最小限の情報しか含まれていない可能性があります。信頼できる DataWriter の場合、キャッシュには確実に配信中のサンプルが含まれている可能性がありますが、配信後に削除される可能性があります。信頼性の高い不揮発性の DataWriter の場合、キャッシュには、lat-joining リーダーが使用できるようにする必要があるすべてのサンプルが含まれる場合があります。

それはすべて、製品の実装方法に依存するためです。

DataWriter 側の唯一のキャッシュ関連メソッドはlookup_instance().

パブリッシャー側でサブスクライバーを作成したり、GDS だけでなくローカルでもリストを維持したりしたかったのです。

パブリッシャー側で DataReader を作成すると、まさに必要なことを行うようです。なぜそれを避けたいのですか?

于 2013-11-22T12:23:41.480 に答える