問題タブ [data-distribution-service]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - コード内のマルチキャスト アドレスが DDS コードに設定されない
使用するDDS
プログラムに次のコードがありますjava 8
RTI DDS 5.2.0
初期ピアの設定は DDS コードに対して正しく機能しますが、回線を使用してアドレスを設定するmulticast_receive_addresses
と、設定されず、デフォルトのマルチキャスト アドレスがデフォルトのままになります。
マルチキャスト アドレスが設定されないのはなぜですか?
data-distribution-service - 無効なサンプルは DataReader の履歴深度 QoS にカウントされますか?
DataReaderのKEEP_LAST_HISTORY
QoS 設定は、インスタンスごとに DataReader によって保持される最近受信したサンプルの量を制限します。たとえば、RTI によって次のように文書化されています。
の場合: Connext DDS は、アプリケーションがの操作を介して取得するまで、各インスタンス (一意のキーによって識別される) で受信した
DataReader
最新の深度DDS サンプルを保持しようとします。DataReader
take()
有効なデータ サンプルに加えて、DDS では、DataReader は無効なサンプルも受け取ります。たとえば、活性の変化を示したり、インスタンスの破棄を示したりします。私の質問は、履歴 QoS 設定がこれらのサンプルにどのように影響するかに関するものです。
- 設定に関して、無効なサンプルは有効なサンプルと同じように扱われ
KEEP_LAST_HISTORY
ますか? たとえば、最新のサンプルのみを保持するデフォルト設定 (履歴の深さ 1) を使用し、DataWriter が有効なデータ サンプルを送信してから、すぐにインスタンスを破棄するとします。サンプルのいずれかが失われるリスクがありますか? それとも、無効なサンプルは何らかの方法で特別に処理されますか? (例: 別のバッファーで) - どちらの場合でも、標準が決定的な答えを提供する場所を誰か教えてもらえますか?
- 履歴の深さの設定がすべての(有効および無効な) サンプルに影響を与えると仮定すると、最後のデータも破棄イベントも見逃さないようにするために、キー付き (および信頼性の高い) トピックの適切な履歴の深さの設定は何でしょうか? これは、に頼ることなく一般的に可能
KEEP_ALL_HISTORY
ですか?
(予期しない) 実装固有の違いがある場合に備えて、最新の C++ API経由で RTI Connext 5.2.0 を使用していることに注意してください。
data-distribution-service - OpenDDS のどのライブラリに「OpenDDS::DCPS::operator<<」が含まれていますか?
このメソッド シグネチャの場所が見つからないため、共有ライブラリを OpenDDS (v3.9) スタティック ライブラリにリンクする際に問題が発生しています。
これがエラーです。
ABTypeSupportImpl.cpp は、IDL のコンパイルから自動生成されます。同じエラーがさらに続きます。名前空間 (OpenDDS::DCPS) のため、これはライブラリ libOpenDDS_Dcps.a 内にあると思いますが、このライブラリで nm を使用し、"operator" または "<<" を grep しても結果は得られません。名前マングリングは、オーバーロードされた演算子にとって少し奇妙である可能性がありますか? $DDS_ROOT/lib 内のすべてのライブラリ ファイルでこれを実行しましたが、何も見つかりませんでした。
また、IDL を再コンパイルして、short や long などのデータ型を持つ構造体のメンバー フィールドを削除すると、エラーは発生せず、すべて正常にリンクされます。
このメソッド シグネチャがどのライブラリにあるか知っている人はいますか?
data-distribution-service - DDS レコーディング サービスの設定ファイルの作成
私は初心者で、DDS レコーディング サービスの構成ファイルを 2 つの領域で作成する方法を明確にする方法を探しています。
ドメインから特定のトピックのセットを記録しようとしている場合、トピック グループをどのように設定しますか? <topic_expr>
トピックを個別にリストできますか
このようなことを試してみると、リストされているすべてのトピックが記録されるわけではありません。私が見落としているものはありますか?
第二に-deserialize
、データベースの記録に使用した構成ファイルに変更を加える必要がある場合は? 「rti dds failed to find」の後に X::Y::Z のようなエラーが表示されることがあります。ありがとう。
c++ - OpenSplice DDS: 発行、タイムアウトまで
私は毎日 dds について学んでいるので、私の質問は奇妙に聞こえます。それが理にかなっていることを願っています。
私が書いている一部の dds ラッパーの要件の 1 つは、書き込みに失敗した場合、一定のタイムアウト期間の後にタイムアウトすることです。私の質問:どうすればそれを行うことができますか?
Prism Tech の Web サイトのチュートリアルでは、a を使用して読み取り操作をブロックする方法が説明されていますWaitSet
が、書き込みはどうでしょうか。
質問を含むいくつかのコードを次に示します。
API に関数が存在することに気付きましたが、これは書き込みの特定の呼び出しではなくDataWriter::wait_for_acknowledgements(int timeout)
、オブジェクトにバインドされているようです。DataWriter
上記の呼び出しでバインドできますか?
messaging - DDS 信頼できるリーダーがアプリケーションの再起動時に同じメッセージを受け取る
およびを含む RTI DDS アプリケーションがreliable reader
ありreliable writer
ます。
リーダー アプリケーションを再起動するたびに、リーダーは既に受信したメッセージを読み取ります。そのため、リーダーがアプリケーションを再起動するメッセージを受信した場合、アプリケーションを再起動するたびに再起動メッセージが読み取られるため、リーダーは再起動ループに入ります。
これらのメッセージは、アプリケーションの再起動前に既に受信されている場合は確認され、再送信されないという印象を受けました。リーダーのアプリケーションを再起動すると、既に読んだメッセージが表示されるのはなぜですか? また、メッセージの送受信が確認されているかどうかを確認する方法はありますか?
java - サブスクライバがデータを受信していません - rti dds
サンプルの rti dds Java プロジェクトを作成しました。ただし、writer.write() がスレッド スリープのループ内にない場合、サブスクライバーはデータを受信していません。
サブスクライバーがデータを取得しない
サブスクライバーはデータを取得します
android - ACE+TAO/OpenDDS は 64 ビット GCC ツールチェーンをサポートしていますか?
ACE+TAO: 6.3.2
OpenDDS: 3.11
ホスト コンパイラ: GCC 5.4
Android用のOpenDDSをクロスコンパイルするとき、ACEのクロスコンパイルを行うように見えるACE_wrappers/build/arm/include/makeinclude/platform_android.GNUを見ていますが、ARM-v7a用にのみビルドされているようです。
私がこれを言う理由は、私のアプリケーションで自動生成されたファイル ((*.idl で opendds_idl を使用することによるもの) をコンパイルするときに、次のエラーが発生するためです。行、最終的に...
以前、CPU アーキテクチャのフラグが間違っているコードをコンパイルしたときに、このようなものを見たことがあります。私の考えでは、GCC に互換性のないツールチェーン設定があり、それをアプリで使用していて、それらの設定が ACE+TAO/OpenDDS で使用されているのではないでしょうか? platform_android.GNU の CROSS_COMPILE 変数は arm-linux-androideabi- です ... 私が知る限り、これは 32 ビット ツールチェーン、つまり arm-v7a であり、v8a の参照は見当たりません。それでも、私のアプリでは aarch64-linux-android-5 を使用しています。これらは互換性がありますか?ツールチェーンは変更できますか?
私がやりたいのは、ターゲット アーキテクチャと ABI 用の ACE+TAO/OpenDDS/my-application をビルドすることです ... arm64: arm64-v8a と NDK ツールチェーンとターゲット ABI を使用します ... aarch64-linux-android-5 : arm64-v8a.
考え?
java - RTI DDS メモリー解放
DDS は、次のサンプル コードを使用したときに作成された DTO への参照を保持していると言われています。
DTO を残りのコードに渡す前に、copy_from メソッドを使用する必要がありますか? 与えられた説明は、RTI が DTO への参照を維持し、新しいデータが受信されたときに、新しい HelloWorld DTO を作成する代わりに単にフィールドを更新するというものでした。説明では、最初にコピーを実行して明示的に解放されない限り、DTO は適切に動作しないと述べています (そのため、オリジナルへの参照は保持していません) リーダーで return_loan を呼び出します。シーケンスがクリアされると参照がクリアされると予想されるため、これは私には意味がありません。
これは正確ですか?DTO が来るたびに、実際にコピーする必要がありますか? これらの DTO は比較的高いレートで送信されるため、可能であればオーバーヘッドを最小限に抑えたいと考えています。
c++ - OpenDDS - 単一の IDL 構造から複数のトピックを作成する
私の演習でOpenDDS
は、単一の IDL 構造から複数のトピックを作成したいと考えています。それは可能ですか? それ以外の場合は、その方法を教えてください。
私は以下のようにしていますが、それが正しい方法でない場合は修正してください。私が使用するサンプルは、OpenDDS-3.12/examples/DCPS/IntroductionToOpenDDS
IDL は次のとおりです。
出版社.cpp