日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

opendds协议服务器,OpenDDS 开发手册

發布時間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opendds协议服务器,OpenDDS 开发手册 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2017-10-30

最后更新時間:

綜述

OpenDDS 的 Recorder 特性允許應用程序在不需要了解數據類型的前提下記錄任意主題下樣本的發布。類似的,Replayer 特性允許這些記錄的樣本以相同或是不同的主題重新進行發布。和其他的 Data Readers 和 Writers 所不同的是其可以在任何類型下正常工作,甚至在編譯階段并不知道數據類型。樣本的每一行包含不透明的字節序列。

本章節的目的是描述 recording/replaying 工作的 OpendDDS 所提供的公共 API。

API Structure

兩個新的用戶可見的類被定義在 OpenDDS:DCPS 命名空間下,其包含 Listener 接口。Listerners 應用程序可選進行實現。Recorder 類扮演的角色類似于 DataReader,Replayer 類扮演的角色類似于 DataWriter。

Recorder 和 Replayer 使用 OpenDDS 底層的發現和傳輸庫,就好像 DataReader 和 DataWriter 一樣。正常的在域中的 OpenDDS 應用程序將會感知到 Recorder 同遠程 DataReader 一樣,而 Replayer 就好像 DataWriter 一樣。

模型用法

應用程序可以按需創建任意數量的 Replayer 和 Recorder。這是基于內建主題在域中動態發現哪些主題是活躍狀態的。創建 Recorder 或是 Replayer 需要應用程序提供主題名和類型名(如同 DomainParticipant::create_topic())以及相關的 QoS 數據結構。Recorder 需要 SubscriberQos,然而 Replayer 需要 PublisherQos 和 DataWriterQos。這些值在 reader/writer 匹配時使用。查看 QoS 處理相關章節來獲得 Recorder 和 Replayer 如何使用 Qos。下面代碼創建一個 recorder:

OpenDDS::DCPS::Recorder_var recorder =

Service_participant->create_recorder(domain_participant,

topic.in(),

sub_qos,

dr_qos,

recorder_listener);

通過 RecorderListener 使用 “one callback per sample” 模型來使得數據樣本可用。樣本作為 OpenDDS::DCPS::RawDataSample 對象。該對象包括數據樣本的時間戳以及排序的樣本值。下面是一個用戶定義的 RecorderListener 類定義:

class MessagerRecorderListener: public OpenDDS::DCPS::RecorderListener

{

public:

MessagerRecorderListener();

virtual void on_sample_data_received(OpenDDS::DCPS::Recorder*,

const OpenDDS::DCPS::RawDataSample &sample);

virtual void on_recorder_matched(OpenDDS::DCPS::Recorder*,

const DDS::SubscriptionMatchedStatus &status);

}

應用程序可以存儲到合適的地方(內存、文件系統、數據庫等等)。后續,應用程序可以將相同的樣本提供給配置了相同主題的 Replayer 對象。應用程序有責任保證主題類型匹配。下面是 replays 將樣本發送給已連接的所有 readers 的例子:

replayer->write(sample);

由于存儲的數據依賴于數據結構的定義,所以參與的 OpenDDS 所使用的版本號和 IDL 版本應該一直。

QoS 處理

由于缺失數據樣本詳細的信息,使得許多在 Replayer 端的正常的 DDS QoS 屬性使用變得復雜。屬性可以分為以下幾類:

Supported

- Liveliness

- Time-Based Filter

- Lifespan

- Durability(transient local level, see details below)

- Presentation(topic level only)

- Transport Priority(pass-thru to transport)

Unsupported

- Deadline(still used for reader/writer match)

- History

- Resource Limits

- Durability Service

- Ownership and Owership Strength(still used for reader/writer match)

Affects reader/writer matching and Built-in Topics otherwise ignored

- Partition

- Reliability(still used by transport negotiation)

- Destination Order

- Latency Budget

- User/Group Data

持久性細節

在 Recorder 端,短暫的本地持久化工作與任何正常的 DataReader 類似。持久化數據從匹配的 DataWriters 獲得。在 Replayer 端有些不同。與正常的 DDS DataWriter 相反,Replayer 不會捕獲/存儲任何數據樣本(其只是傳輸)。由于實力并不知道,因此根據通常歷史和資源限制規則存儲數據樣本是不可能的。相反,短暫本地持久化可以支持 “pull”,這是當一個新的遠端 DataReader 被發現時,中間件調用 ReplayerListener 的方法來實現的。應用程序可以 Replayer 上調用任何數據樣本來發送給新連接上的 DataReader。決定哪些樣本是留給應用端確定的。

參考

Home

Profile

Code

Mail

總結

以上是生活随笔為你收集整理的opendds协议服务器,OpenDDS 开发手册的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。