在這一課,您將為 MyPublisher 發佈者實體新增網域參與者。
- 用滑鼠右鍵按一下 PublisherPkg 套件,然後選取。
- 開啟網域參與者元素的「特性」視窗,然後輸入下列資訊:
- 在一般標籤上,將元素命名為 MyPublishingApplication。 注意,依預設目錄欄位中也輸入了相同的名稱,並在類型區域中選取了執行檔。
- 在範圍標籤上,選取 PublisherPkg。 如果選取了其他勾選框,請將其清除。按一下確定。
- 指定 MyPublishingApplication 網域參與者的配置:
- 在 MyPublishingApplication 下開啟 DefaultConfig 配置的「特性」視窗
- 在起始設定標籤上,展開 PublisherPkg 並選取 MyPublisher
- 在設定標籤上,選取 MSVC9 或 Linux 環境,然後按一下確定
- 從 MyPublishingApplication 網域參與者新增相依關係至 MyTopicStructLib 網域參與者。
- 用滑鼠右鍵按一下 MyPublishingApplication,並選取
- 在「新增相依關係」視窗上,選取 MyTopicStructLib in TopicsPkg
- 從瀏覽器開啟相依關係的「特性」視窗,並輸入下列資訊:
- 在一般標籤的造型欄位中,選取預先定義類型中的用法
- 確保用法欄位設定為規格,然後按一下確定。 此相依關係容許在登錄 MyTopicStruct 並建立 MyTopic 時使用 MyTopicStructLib 的功能。
此相依關係還提供 MyTopicStructLib 的功能,以建立 MyDataWriter。
- 產生程式碼:選取。
註: 因為您在這一課中建立了 PublisherPkg 套件,則 DefaultConfig 配置已設定為作用中的配置。
- 在 MyPublishingApplication 網域參與者下,用滑鼠右鍵按一下 DefaultConfig 配置,並選取編輯配置主要檔。 注意,產生程式碼會建立一個單態類別 MyPublishingApplicationDP。
該類別封套在 DDS::DomainParticipant 實體內。
它提供下列 API:
- DDS::DomainParticipant* getDomainParticipant():取得該類別的 DDS::DomainParticipant 成員
- DDS::TopicDescription* lookupTopicDescription(char* topicName):DDS 標準 API 的封套,呼叫 DDS::DomainParticipant::lookup_topicdescription
- static MyPublishingApplicationDP* instance():單態作業,容許接收此類別的單態實例
在實作主要檔中,可以看到
MyPublishingApplicationDP 建構子中的下列動作:
- 建立 DDS::DomainParticipant 元素
- 登錄 MyTopicStruct
- 建立 MyTopic
後面兩個元素是網域參與者元件的範圍中的 MyDataWriter 更新 MyTopic 的表示法結果。
如發佈者實體的圖表形狀所暗示的,為發佈者實體產生的程式碼為類別。此類別包含 DDS::Publisher 指標的屬性,該屬性在建構新的類別實例期間已起始設定。它還包含 MyTopicStructDataWriter 指標 MyDataWriter,以代表您建立的 dataWriter 元素。MyTopicStructDataWriter 指標是在為名為 MyTopicStructLib 的網域參與者元件中的 DDSMyTopicStructLib.idl 檔案產生的文件中定義的。
如果編輯 MyPublisher 的程式碼,您將看到在其建構期間呼叫 MyPublishingApplicationDP,以擷取其 DDS::DomainParticipant 成員,從而建立 DDS::Publisher 元素。
您還會發現此作業:DDS::ReturnCode_t publishMyDataWriter(const
MyTopicStruct& data);
此作業是 MyTopicStructDataWriter::write 的封套。此函式是從產生的 DDSMyTopicStructLib.idl 檔案產生的。