< 前へ | 次へ >

レッスン 7: パブリッシャー・エンティティーのドメイン参加者を追加する

このレッスンでは、MyPublisher パブリッシャー・エンティティーのドメイン参加者を追加します。
  1. PublisherPkg パッケージを右クリックして、「新規追加」 > 「DDS」 > 「domainParticipant」と選択します。
  2. ドメイン参加者要素の「フィーチャー」ウィンドウを開き、以下のように情報を入力します。
    1. 「一般」タブで、要素を MyPublishingApplication と命名します。 デフォルトでは同じ名前が「ディレクトリー」フィールドにも入力され、「タイプ」域で「実行可能」が選択されています。
    2. 「スコープ」タブで、「PublisherPkg」を選択します。 その他のチェック・ボックスが選択されていれば、選択解除します。「OK」をクリックします。
  3. 以下の手順で MyPublishingApplication ドメイン参加者の構成を指定します。
    1. 「MyPublishingApplication」の下で DefaultConfig 構成の「フィーチャー」ウィンドウを開きます。
    2. 「初期設定」タブで、「PublisherPkg」を展開して、「MyPublisher」を選択します。
    3. 「設定」タブで、「MSVC9」または「Linux」環境を選択し、「OK」をクリックします。
  4. 以下の手順で MyPublishingApplication ドメイン参加者から MyTopicStructLib ドメイン参加者への依存関係を追加します。
    1. 「MyPublishingApplication」を右クリックして、「新規追加」 > 「関係」 > 「依存関係」と選択します。
    2. 「依存関係の追加」ウィンドウで、「TopicsPkg 内の MyTopicStructLib」を選択します。
  5. ブラウザーから、依存関係の「フィーチャー」ウィンドウを開き、以下のように情報を入力します。
    1. 「一般」タブの「ステレオタイプ」フィールドで、「PredefinedTypes での使用」を選択します。
    2. 「使用」フィールドが「仕様」に設定されていることを確認して、「OK」をクリックします。 この依存関係により、MyTopicStruct の登録時および MyTopic の作成時に MyTopicStructLib の関数を使用できます。 この依存関係により、MyTopicStructLib の関数で MyDataWriter を作成することもできます。
  6. コードを生成します。そのためには「コード」 > 「生成」 > 「DefaultConfig」と選択します。
    注: このレッスンで PublisherPkg パッケージを作成したので、DefaultConfig 構成は既にアクティブ構成として設定されています。
  7. MyPublishingApplication ドメイン参加者の下で、DefaultConfig 構成を右クリックして、「構成メインファイルの編集」を選択します。 コード生成により、MyPublishingApplicationDP という名前の singleton クラスが作成されました。 このクラスは、DDS::DomainParticipant エンティティーに対するラッパーで、 以下の API を提供します。
    • DDS::DomainParticipant* getDomainParticipant(): このクラスの DDS::DomainParticipant メンバーを取得します。
    • DDS::TopicDescription* lookupTopicDescription(char* topicName): DDS 標準 API 呼び出し DDS::DomainParticipant::lookup_topicdescription に対するラッパー
    • static MyPublishingApplicationDP* instance(): このクラスの singleton インスタンスを受信できるようにする singleton 操作
実装メインファイルでは、MyPublishingApplicationDP のコンストラクターの以下のアクションを判別できます。

最後の 2 つの要素は、ドメイン参加者コンポーネントのスコープにある MyDataWriter が MyTopic を更新するという表記の結果です。

パブリッシャー・エンティティーのダイアグラム形状が暗示しているので、パブリッシャー・エンティティーに生成されたコードはクラスです。このクラスには、新規クラス・インスタンスの構築時に初期化される DDS::Publisher ポインターの属性が含まれます。作成した dataWriter 要素を表わす MyDataWriter という名前の MyTopicStructDataWriter ポインターも含まれます。MyTopicStructDataWriter ポインターは、MyTopicStructLib という名前のドメイン参加者コンポーネント内の DDSMyTopicStructLib.idl ファイルから生成されたファイル内で定義されています。

MyPublisher のコードを編集した場合、その構築時に、DDS::Publisher 要素を作成できるように、その DDS::DomainParticipant メンバーを取得するために、MyPublishingApplicationDP が呼び出されることがわかります。 操作: DDS::ReturnCode_t publishMyDataWriter(const MyTopicStruct& data); も判別できます。

この操作は、MyTopicStructDataWriter::write に対するラッパーです。この関数は、生成された DDSMyTopicStructLib.idl ファイルから生成されたものです。

レッスンのチェックポイント

このレッスンでは、ドメイン参加者を MyPublisher パブリッシャー・エンティティーに追加する方法について学習しました。
次のレッスンでは、データを MyTopic トピック要素に公開するために、ある種のコードを追加します。
< 前へ | 次へ >

フィードバック