このレッスンでは、MyPublisher パブリッシャー・エンティティーのドメイン参加者を追加します。
- PublisherPkg パッケージを右クリックして、と選択します。
- ドメイン参加者要素の「フィーチャー」ウィンドウを開き、以下のように情報を入力します。
- 「一般」タブで、要素を MyPublishingApplication と命名します。 デフォルトでは同じ名前が「ディレクトリー」フィールドにも入力され、「タイプ」域で「実行可能」が選択されています。
- 「スコープ」タブで、「PublisherPkg」を選択します。 その他のチェック・ボックスが選択されていれば、選択解除します。「OK」をクリックします。
- 以下の手順で MyPublishingApplication ドメイン参加者の構成を指定します。
- 「MyPublishingApplication」の下で DefaultConfig 構成の「フィーチャー」ウィンドウを開きます。
- 「初期設定」タブで、「PublisherPkg」を展開して、「MyPublisher」を選択します。
- 「設定」タブで、「MSVC9」または「Linux」環境を選択し、「OK」をクリックします。
- 以下の手順で MyPublishingApplication ドメイン参加者から MyTopicStructLib ドメイン参加者への依存関係を追加します。
- 「MyPublishingApplication」を右クリックして、と選択します。
- 「依存関係の追加」ウィンドウで、「TopicsPkg 内の MyTopicStructLib」を選択します。
- ブラウザーから、依存関係の「フィーチャー」ウィンドウを開き、以下のように情報を入力します。
- 「一般」タブの「ステレオタイプ」フィールドで、「PredefinedTypes での使用」を選択します。
- 「使用」フィールドが「仕様」に設定されていることを確認して、「OK」をクリックします。 この依存関係により、MyTopicStruct の登録時および MyTopic の作成時に MyTopicStructLib の関数を使用できます。
この依存関係により、MyTopicStructLib の関数で MyDataWriter を作成することもできます。
- コードを生成します。そのためにはと選択します。
注: このレッスンで PublisherPkg パッケージを作成したので、DefaultConfig 構成は既にアクティブ構成として設定されています。
- 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 のコンストラクターの以下のアクションを判別できます。
- DDS::DomainParticipant 要素が作成された
- MyTopicStruct が登録された
- MyTopic が作成された
最後の 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 ファイルから生成されたものです。