OpenDDS 配置文件详解
配置文件格式:除了common外,[section type/instance],如[repository/repo_1]
命令行使用配置文件:./publisher -DCPSConfigFile pub.ini
代碼級別設置默認配置文件: Service_Participant模塊允許DDS客戶端應用層代碼級別去配置OpenDDS
#include <dds/DCPS/Service_Participant.h>
int main (int argc, char* argv[]){
TheServiceParticipant->default_configuration_file(ACE_TEXT(“pub.ini”));
DDS::DomainParticipantFactory_var dpf = TheParticipantFactoryWithArgs(argc, argv);
?
?
[Common Configuration Options]
[common]
| Option | Description | Default |
| DCPSBit=[1|0] | 切換內置主題支持 | 1 |
| DCPSBitLookupDurationMsec=msec | 檢索給定實例句柄的BIT數據時,框架將等待潛在的內置主題信息的最大持續時間(以毫秒為單位)。 參與者代碼可以在框架接收并處理相關的BIT信息之前獲取遠程實體的實例句柄。 框架會在操作失敗之前等待多長給定的時間。 | 2000 |
| DCPSBitTransportIPAddress=addr | 用于標識tcp傳輸內置主題的本地接口的IP地址。 注意:此屬性僅適用于DCPSInfoRepo configuration | INADDR_ANY |
| DCPSBitTransportPort=port | 用于標識tcp傳輸內置主題的端口。如果使用默認值“ 0”,則操作系統來選擇要使用的端口。 注意:此屬性僅適用于DCPSInfoRepo configuration。 | 0 |
| DCPSChunks=n | 當RESOURCE_LIMITS QoS值是無窮大時,數據寫入者和讀取者的緩存分配器將預分配的塊的可配置數量。 當所有預分配的塊都在使用時,OpenDDS從堆中進行分配。 | 20 |
| DCPSChunkAssociationMultiplier=n | 與DCPSChunks或resource_limits.max_samples相乘的值,以確定已預先分配的淺拷貝塊的總數。 將此值設置為大于連接數的值,以使預分配的塊句柄不會用完。 寫入多個數據讀取器的樣本不會被多次復制,但是該樣本有一個淺表復制句柄,用于管理向每個數據讀取器的交付。 句柄的大小很小,因此不需要將此值設置為接近連接數。 | 10 |
| DCPSDebugLevel=n | 控制DCPS層打印的調試信息量的整數值。 有效值為0到10。 ?0-表示嚴重錯誤的日志,未指示在返回code中(幾乎沒有)。 ?1-每個進程應該發生一次或警告的日志 ?2-每個DDS實體應該發生一次的日志 ?4-與管理界面相關的日志 ?6-每N個樣本寫入/讀取應發生的日志 ?8-每個樣本寫入/讀取應發生一次的日志 ?10-每次樣本寫入/讀取可能發生多次的日志 | 0 |
| DCPSDefaultAddress=addr | 包含local_address的傳輸實例的local_address主機部分的默認值。 僅在將DCPSDefaultAddress設置為非空值并且在傳輸中未指定local_address時應用。其他子系統(例如DDSI-RTPS Discovery)也將DCPSDefaultAddress用作默認值。 | ? |
| DCPSDefaultDiscovery=[ DEFAULT_REPO| DEFAULT_RTPS| DEFAULT_STATIC| user-defined configuration instance name] | 指定用于未明確配置的任何域的發現配置。 DEFAULT_REPO轉換為使用DCPSInfoRepo。 DEFAULT_RTPS指定使用RTPS進行發現。 DEFAULT_STATIC指定使用靜態發現。 | DEFAULT_REPO |
| DCPSGlobalTransportConfig=name | 指定應該用作全局配置的傳輸配置的名稱。 所有未指定傳輸配置的實體都使用此配置。 $ file的特殊值使用的傳輸配置包括配置文件中定義的所有傳輸實例 | ?? |
| DCPSInfoRepo=objref | 用于查找DCPS信息存儲庫的對象引用。 這可以是完整的CORBA IOR,也可以是簡單的host:port字符串。 | file://repo.ior |
| DCPSLivelinessFactor=n | 活動性租用期限的百分比,在此百分比之后發送活動性消息。 值80表示從最后檢測到的心跳消息開始之后延遲減少了20%。 | 80 |
| DCPSMonitor=[0|1] | 使用OpenDDS_monitor庫發布有關監視主題的數據 | 0 |
| DCPSPendingTimeout=sec | 數據寫入器將阻塞的最大持續時間(以秒為單位),以允許刪除未發送的樣本。 默認情況下,此選項會無限期阻止。 | 0 |
| DCPSPersistentDataDir=path | 文件系統上將存儲持久數據的路徑。 如果該目錄不存在,它將自動創建。 | OpenDDS-durable-data-dir |
| DCPSPublisherContentFilter=[1|0] | 控制內容過濾主題的過濾器表達式評估策略。 啟用(1)后,如果所有訂閱者都將忽略這些樣本,則發布者可以將樣本移交給傳輸之前丟棄任何樣本。 | 1 |
| DCPSSecurity=[0|1] | 僅在啟用DDS安全性的情況下編譯OpenDDS時,此設置才可用。 如果設置為1,則啟用DDS Securityframework和內置插件。 必須使用特定的QoS策略值來創建使用安全性的每個域參與者。 | 0 |
| DCPSSecurityDebug=CAT[,CAT...] | 僅在啟用DDS安全性的情況下編譯OpenDDS時,此設置才可用。 這將按類別控制安全調試日志記錄的粒度。 | 0 |
| DCPSSecurityDebugLevel=n | 僅在啟用DDS安全性的情況下編譯OpenDDS時,此設置才可用。 這將按調試級別控制安全性調試日志記錄的粒度。 | N/A |
| DCPSSecurityFakeEncryption=[0|1] | 僅在啟用DDS安全性的情況下編譯OpenDDS時,此設置才可用。 設置為1時,此選項禁用所有加密(加密和解密的操作)。 OpenDDS仍會生成密鑰并執行其他安全性簿記,因此該選項通過調試手動檢查所有消息,對調試安全性基礎結構很有用。 | 0 |
| pool_size=n_bytes | 安全配置文件存儲池的大小,以字節為單位。 | 41943040 (40 MiB) |
| pool_granularity=n_bytes | 安全配置文件存儲池的粒度(以字節為單位)。 必須是8的倍數。 | 8 |
| Scheduler=[ SCHED_RR| SCHED_FIFO| SCHED_OTHER] | 選擇要使用的線程調度器。 在大多數系統上,將調度程序設置為默認值以外的值需要特權。 可以設置SCHED_RR,SCHED_FIFO或SCHED_OTHER的值。 SCHED_OTHER是大多數系統上的默認調度程序。 | SCHED_OTHER |
| scheduler_slice=usec | 選擇默認調度程序以外的某些調度程序時,某些操作系統(例如SunOS)需要設置時間片值。 對于那些系統,此選項可用于以微秒為單位設置值。 | None |
| DCPSBidirGIOP=[0|1] | 使用TAO的雙向GIOP功能與DCPSInfoRepo進行交互。 啟用BiDir后,可以使用較少的套接字,因為相同的套接字可用于客戶端和服務器角色。 | 1 |
| DCPSThreadStatusInterval=sec | 使用指定的報告間隔(以秒為單位)對內部線程狀態進行報告。 | 0 (disabled) |
?
[Discovery Configuration]
[Domain Configuration]
[domain/*]
| Option | Description | Default |
| DomainId=n | 表示與存儲庫關聯的域的整數值。 | ? |
| DomainRepoKey=k | 映射的存儲庫的鍵值(不推薦使用。為向后兼容而提供)。 | ? |
| DiscoveryConfig=config instance name | 用戶定義的字符串,它引用同一配置文件中[repository]或[rtps_discovery]節的實例名稱或內部默認值之一(DEFAULT_REPO,DEFAULT_RTPS或DEFAULT_STATIC)。 | ? |
| DefaultTransportConfig=config | 用戶定義的字符串,它引用[config]節的實例名稱 | ? |
[Multiple repository configuration sections]
[repository/*]
| Option | Description | Default |
| RepositoryIor=ior | 存儲庫IOR或host:port。 | ? |
| RepositoryKey=key | 存儲庫的唯一鍵值。 (不推薦使用。為向后兼容而提供) | ? |
[RTPS Discovery Configuration Options]
[rtps_discovery/*]
| Option | Description | Default |
| ResendPeriod=sec | 參與者公告之間進程等待的秒數 | 30 |
| MinResendDelay | 參與者公告之間的最短時間(以毫秒為單位)。 | 100 |
| QuickResendRatio | 配置本地SDPD重發的調整參數(重發周期的比率) | 0.1 |
| LeaseDuration=sec | 作為參與者發送公告的一部分。 它告訴對等參與者,如果他們在指定的持續時間內沒有收到該參與者的消息,則可以認為該參與者“沒有生命”。 | 300 |
| PB=port | 端口基本號。 此數字設置派生用于簡單端點發現協議(SEDP)的端口號的起點。 此屬性與DG,PG,D0(或DX)和D1結合使用,以構造用于RTPS發現通信的必要端點。 | 7400 |
| DG=n | 表示域增益的整數值。 這是一個乘法器,有助于為RTPS制定多播或單播端口。 | 250 |
| PG=n | 一個整數,它有助于配置SPDP 單播端口并用作偏移乘數,因為使用以下公式為參與者分配了地址: PB + DG * domainId + d1 + PG * particatorId | 2 |
| D0=n | 一個整數值,有助于在SPDP Multicast配置中提供用于計算可分配端口的偏移量。 使用的公式為: PB + DG * domainId + d0 | 0 |
| D1=n | 一個整數值,有助于在SPDP Unicast配置中提供用于計算可分配端口的偏移量。 使用的公式為: PB + DG * domainId + d1 + PG *particatorId | 10 |
| SedpMaxMessageSize | 設置最大SEDP消息大小。 默認值為最大UDP消息大小。 | 65466 |
| SedpMulticast=[0|1] | 一個布爾值(0或1),用于確定是否將多播用于SEDP通信。 設置為1時,使用多播。 設置為零(0)時,使用SEDP的單播 | 1 |
| SedpLocalAddress=addr:port | 配置傳輸實例的創建以及通過SEDP綁定到指定的本地地址和端口。 為了保留未指定的端口,可以從設置中將其省略,但必須在末尾加上:。 | System default address |
| SpdpLocalAddress=addr[:port] | 本地接口的地址,SPDP將使用該地址綁定到該特定接口。 | DCPSDefaultAddress, or IPADDR_ANY |
| DX=n | 一個整數值,有助于在SEDP組播配置中提供用于計算端口的偏移量。 使用的公式為: PB + DG * domainId + dx 僅當SedpMulticast = 1時有效。 | 2 |
| SpdpSendAddrs= [host:port],[host:port]... | host:port對的列表(用逗號或空格分隔),用作SPDP內容的目標。 這可以是單播和多播地址的組合。 | ? |
| MaxSpdpSequenceMsgResetChecks=n | 超過了此數量的SPDP消息的序列號之后,刪除發現的參與者。 | 3 |
| PeriodicDirectedSpdp=[0|1] | 一個布爾值,它確定是否在每個重發周期將定向的SPDP消息發送給所有參與者。 應該為不能使用多播發送SPDP公告的參與者(例如RtpsRelay)啟用此設置。 | 0 |
| UndirectedSpdp=[0|1] | 一個布爾值,它確定是否發送無向SPDP消息。 對于無法使用多播發送SPDP通知的參與者(例如RtpsRelay),應禁用此設置。 | 1 |
| InteropMulticastOverride=group_address | 指定要用于SPDP發現的多播組的網絡地址。 這將覆蓋規范的互操作性組。 例如,它可用于指定路由組地址的使用以提供更大的發現范圍。 | 239.255.0.1 |
| TTL=n | 作為發現的一部分發送的多播數據報的生存時間(TTL)字段的值。 此值指定數據報在被網絡丟棄之前將經過的躍點數。 默認值1表示所有數據都限于本地網絡子網。 | 1 |
| MulticastInterface=iface | 指定此發現實例要使用的網絡接口。 這使用特定于平臺的格式來標識網絡接口。 在Linux系統上,這將類似于eth0。如果未配置此值,則使用通用配置值DCPSDefaultAddress來設置多播接口 | The system default interface is used |
| GuidInterface=iface | 確定哪個本地MAC地址應出現在由此節點生成的GUID中時要使用的網絡接口。 | The system / ACE library default is used |
| SpdpRtpsRelayAddress=host:port | 指定用于SPDP消息的RtpsRelay的地址。 | ? |
| SpdpRtpsRelaySendPeriod=period | 指定發送到RtpsRelay的SPDP公告之間的間隔。 | 30 s |
| SedpRtpsRelayAddress=host:port | 指定用于SEDP消息的RtpsRelay的地址。 | ? |
| RtpsRelayOnly=[0|1] | 僅將RTPS消息發送到RtpsRelay(用于調試)。 | 0 |
| UseRtpsRelay=[0|1] | 將消息發送到RtpsRelay。 僅當設置了SpdpRtpsRelayAddress和/或SedpRtpsRelayAddress時,才會發送消息。 | 0 |
| SpdpStunServerAddress=host:port | SPDP使用ICE時,指定STUN服務器的地址。 | ? |
| SedpStunServerAddress=host:port | SEDP使用ICE時,指定STUN服務器的地址。 | ? |
| UseIce=[0|1] | 為SPDP和SEDP啟用或禁用ICE。 | 0 |
| IceTa=milliseconds | ICE發送之間的最小間隔。 | 50 ms |
| IceConnectivityCheckTTL=seconds | 連接檢查的最大持續時間。 | 300 s |
| IceChecklistPeriod=seconds | 嘗試在此時間內循環進行候選人的所有連接檢查。 | 10 |
| IceIndicationPeriod=seconds | 通過此周期向對等體發送STUN指示以維護NAT綁定。 | 15 |
| IceNominatedTTL=seconds | 如果在此時間內未收到指示,請忽視有效的候選人。 | 300 |
| IceServerReflexiveAddressPeriod=seconds | 通過此周期將消息發送到STUN服務器。 | 30 |
| IceServerReflexiveIndicationCount=integer | 在向STUN服務器發送新的綁定請求之前,發送一些指示。 | 10 |
| IceDeferredTriggeredCheckTTL=seconds | 在這段時間后,清除延遲的檢查。 | 300 s |
| IceChangePasswordPeriod=seconds | 在這段時間后,更改ICE密碼。 | 300 s |
| MaxAuthTime=seconds | 設置使用DDS安全性進行身份驗證的最長時間。 | 300 s |
| AuthResendPeriod=seconds | 在這段時間后重新發送身份驗證消息。 | 1 s |
| SecureParticipantUserData=[0|1] | 如果啟用了DDS安全性,則從不安全的發現消息中將省略參與者的USER_DATA QoS。 | 0 |
| UseXTypes=[0|1] | 啟用XTypes規范中的發現擴展。 參與者使用類型查找服務交換端點公告中的頂級類型信息和擴展類型信息。 | 1 |
| TypeLookupServiceReplyTimeout=milliseconds | 如果將請求發送到對等方的“類型查找服務”(請參見上面的UseXTypes),請在此期間內等待答復。 | 5 seconds |
?
[Configuring For Static Discovery] *當前靜態發現只能使用rtps_udp傳輸
[topic/*] Configuration Options
| Option | Description | Default |
| name=string | topic的名稱 | Instance nameof section |
| type_name=string | 唯一定義樣本類型的標識符。 這通常是CORBA接口存儲庫類型名稱。 | Required |
[datawriterqos/*] Configuration Options
| Option | Description | Default |
| durability.kind=[ VOLATILE|TRANSIENT_LOCAL] | ? | ? |
| deadline.period.sec=[ numeric|DURATION_INFINITE_SEC] | ? | ? |
| deadline.period.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] | ? | ? |
| latency_budget.duration.sec=[ numeric|DURATION_INFINITE_SEC] | ? | ? |
| latency_budget.duration.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] | ? | ? |
| liveliness.kind=[ AUTOMATIC| MANUAL_BY_TOPIC| MANUAL_BY_PARTICIPANT] | ? | ? |
| liveliness.lease_duration.sec=[ numeric|DURATION_INFINITE_SEC] | ? | ? |
| liveliness.lease_duration.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] | ? | ? |
| reliability.kind=[ BEST_EFFORT|RELIABILE] | ? | ? |
| reliability.max_blocking_time.sec=[ numeric|DURATION_INFINITE_SEC] | ? | ? |
| reliability.max_blocking_time.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] | ? | ? |
| destination_order.kind=[ BY_SOURCE_TIMESTAMP| BY_RECEPTION_TIMESTAMP] | ? | ? |
| history.kind=[KEEP_LAST|KEEP_ALL] | ? | ? |
| history.depth=numeric | ? | ? |
| resource_limits.max_samples=numeric | ? | ? |
| resource_limits.max_instances=numeric | ? | ? |
| resource_limits.max_samples_per_instance= numeric | ? | ? |
| transport_priority.value=numeric | ? | ? |
| lifespan.duration.sec=[ numeric|DURATION_INFINITE_SEC] | ? | ? |
| lifespan.duration.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] | ? | ? |
| ownership.kind=[SHARED|EXCLUSIVE] | ? | ? |
| ownership_strength.value=numeric | ? | ? |
[datareaderqos/*] Configuration Options
| Option | Description | Default |
| durability.kind=[ VOLATILE|TRANSIENT_LOCAL] | ? | ? |
| deadline.period.sec=[ numeric|DURATION_INFINITE_SEC] | ? | ? |
| deadline.period.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] | ? | ? |
| latency_budget.duration.sec=[ numeric|DURATION_INFINITE_SEC] | ? | ? |
| latency_budget.duration.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] | ? | ? |
| liveliness.kind=[ AUTOMATIC| MANUAL_BY_TOPIC| MANUAL_BY_PARTICIPANT] | ? | ? |
| liveliness.lease_duration.sec=[ numeric|DURATION_INFINITE_SEC] | ? | ? |
| liveliness.lease_duration.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] | ? | ? |
| reliability.kind=[ BEST_EFFORT|RELIABILE] | ? | ? |
| reliability.max_blocking_time.sec=[ numeric|DURATION_INFINITE_SEC] | ? | ? |
| reliability.max_blocking_time.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] | ? | ? |
| destination_order.kind=[ BY_SOURCE_TIMESTAMP| BY_RECEPTION_TIMESTAMP] | ? | ? |
| history.kind=[KEEP_LAST|KEEP_ALL] | ? | ? |
| history.depth=numeric | ? | ? |
| resource_limits.max_samples=numeric | ? | ? |
| resource_limits.max_instances=numeric | ? | ? |
| resource_limits.max_samples_per_instance= numeric | ? | ? |
| time_based_filter.minimum_separation.sec=[ numeric|DURATION_INFINITE_SEC] | ? | ? |
| time_based_filter.minimum_separation.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] | ? | ? |
| reader_data_lifecycle.autopurge_nowriter_samples_delay.sec=[ numeric|DURATION_INFINITE_SEC] | ? | ? |
| reader_data_lifecycle.autopurge_nowriter_samples_delay.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] | ? | ? |
| reader_data_lifecycle.autopurge_dispose_samples_delay.sec=[ numeric|DURATION_INFINITE_SEC] | ? | ? |
| reader_data_lifecycle.autopurge_dispose_samples_delay.nanosec=[ numeric|DURATION_INFINITE_NANOSEC] | ? | ? |
[publisherqos/*] Configuration Options
| Option | Description | Default |
| presentation.access_scope=[ INSTANCE|TOPIC|GROUP] | ? | ? |
| presentation.coherent_access=[ true|false] | ? | ? |
| presentation.ordered_access=[ true|false] | ? | ? |
| partition.name=name0,name1,... | ? | ? |
[subscriberqos/*] Configuration Options
| Option | Description | Default |
| presentation.access_scope=[ INSTANCE|TOPIC|GROUP] | ? | ? |
| presentation.coherent_access=[ true|false] | ? | ? |
| presentation.ordered_access=[ true|false] | ? | ? |
| partition.name=name0,name1,... | ? | ? |
[endpoint/*] Configuration Options
| Option | Description | Default |
| domain=numeric | 端點的域ID,范圍為0-231。 用于形成端點的GUID。 | Required |
| participant=hexstring | 12個十六進制數字的字符串。 用于形成端點的GUID。 具有相同域/參與者組合的所有端點應處于同一進程中。 | Required |
| entity=hexstring | 6個十六進制數字的字符串。 用于形成端點的GUID。 域/參與者/實體的組合應該是唯一的。 | Required |
| type=[reader|writer] | 確定實體是數據讀取器還是數據寫入器。 | Required |
| topic=name | Refers to a [topic/*] section. | Required |
| datawriterqos=name | Refers to a [datawriterqos/*] section. | ? |
| datareaderqos=name | Refers to a [datareaderqos/*] section. | ? |
| publisherqos=name | Refers to a [publisherqos/*] section. | ? |
| subscriberqos=name | Refers to a [subscriberqos/*] section. | ? |
| config | Refers to a? [config / *]節中的傳輸配置。 這用于確定端點的網絡地址。 | ? |
?
[Transport Configuration]
[Transport Configuration Options]
[transport/*]
| Option | Description | Default |
| Transports=inst1[,inst2][,...] | 此配置將使用的傳輸實例名稱的有序列表。 每個傳輸配置都需要此字段。 | none |
| swap_bytes=[0|1] | 值為0會使DDS以源計算機的本機字節序對數據進行序列化; 值為1會使DDS以相反的字節序對數據進行序列化。 接收方將調整數據的字節序,因此無需在機器之間匹配此選項。 此選項的目的是允許開發人員確定在必要時進行哪一方進行字節順序調整。 | 0 |
| passive_connect_duration=msec | 初始被動連接建立的超時(毫秒)。 默認情況下,此選項等待十秒鐘。 零值將無限期等待(不建議)。 | 10000 |
[Common Transport Configuration Options]
| Option | Description | Default |
| transport_type=transport | 傳輸類型; 可以通過傳輸框架以編程方式擴展可用傳輸的列表。 tcp,udp,multicast,shmem和rtps_udp包含在OpenDDS中。 | none |
| queue_messages_per_pool=n | 當檢測到backpressure時,消息發送將要排隊。 當消息隊列必須增長時,它將以該數字增長。 | 10 |
| queue_initial_pools=n | backpressure隊列的初始池數。 兩個backpressure隊列值的默認設置為50個消息(5個10個消息的池)預分配了空間。 | 5 |
| max_packet_size=n | 傳輸數據包的最大大小,包括其傳輸標頭,樣本標頭和樣本數據。 | 2147481599 |
| max_samples_per_packet=n | 傳輸數據包中的最大樣本數。 | 10 |
| optimum_packet_size=n | 即使仍然有排隊的樣本要發送,大于此大小的傳輸數據包也會通過電纜發送。 該值可能會影響性能,具體取決于您的網絡配置和應用程序性質。 | 4096 (4 KiB) |
| thread_per_connection= [0|1] | 啟用或禁用每個連接發送策略的線程。 默認情況下,此選項處于禁用狀態。 | 0 |
| datalink_release_delay=msec | datalink_release_delay是沒有關聯后數據鏈路釋放的延遲(以毫秒為單位)。 增加此值可能會減少在頻繁添加和刪除讀取器/寫入器關聯時重新建立的開銷。 | 10000 |
[TCP/IP Configuration Options]
| Option | Description | Default |
| active_conn_timeout_period=msec | 活動連接側等待建立連接的時間段(毫秒)。 如果在此期間未連接,則將調用on_publication_lost()回調。 | 5000 |
| conn_retry_attempts=n | 丟棄并調用on_publication_lost()和on_subscription_lost()回調之前的重新連接嘗試次數。 | 3 |
| conn_retry_initial_delay=msec | 嘗試重新連接的初始延遲(毫秒)。 假設檢測到丟失的連接,則嘗試重新連接。 如果此重新連接失敗,則在此指定的延遲后進行第二次嘗試。 | 500 |
| conn_retry_backoff_multiplier=n | 重新連接嘗試的退避乘數。 在上述初始延遲之后,后續延遲由該乘數與先前延遲的乘積確定。 例如,如果conn_retry_initial_delay為500,conn_retry_backoff_multiplier為1.5,則第二次重新連接嘗試將在第一次重試連接失敗后的0.5秒內進行; 第三次嘗試將在第二次重試連接失敗后的0.75秒內進行; 第三次嘗試將在第三次重試連接失敗后的1.125秒內進行。 | 2.0 |
| enable_nagle_algorithm=[0|1] | 啟用或禁用Nagle的算法。 默認情況下,它是禁用的。 啟用Nagle的算法可能會增加吞吐量,但會增加延遲。 | 0 |
| local_address=host:port | 連接接受器的主機名和端口。 默認值為FQDN和端口0,這意味著操作系統將選擇該端口。 如果僅指定了主機,但省略了端口號,則主機說明符上仍需要“:”。 | fqdn:0 |
| max_output_pause_period=msec | 排隊中消息無法發送時的最長時間(毫秒)。 如果有樣本在排隊沒有輸出,并超過此時間段,則連接將關閉,并且將調用on_*_lost()回調。 默認值為零表示不進行此檢查。 | 0 |
| passive_reconnect_duration=msec | 被動連接端等待連接重新連接的時間段(毫秒)。 如果在這段時間內未重新連接,則將調用on _ * _ lost()回調。 | 2000 |
| pub_address=host:port | 用配置的字符串覆蓋發送給對等方的地址。 這可用于防火墻穿越和其他高級網絡配置。 | ? |
[UDP/IP Configuration Options]
| Option | Description | Default |
| local_address=host:port | 偵聽套接字的主機名和端口。 默認為基礎操作系統選擇的值。 該端口可以省略,在這種情況下,該值應以“:”結尾。 | fqdn:0 |
| send_buffer_size=n | 用于UDP有效負載的總發送緩沖區大小(以字節為單位)。 | Platform value of ACE_DEFAULT_MAX_SOCKET_BUFSIZ |
| rcv_buffer_size=n | 用于UDP有效負載的總接收緩沖區大小(以字節為單位)。 | Platform value of ACE_DEFAULT_MAX_SOCKET_BUFSIZ |
[IP Multicast Configuration Options]
| Option | Description | Default |
| default_to_ipv6=[0|1] | 啟用IPv6默認組地址選擇。 默認情況下,此選項處于禁用狀態。 | 0 |
| group_address=host:port | 要加入以發送/接收數據的多播組。 | 224.0.0.128:<port>,[FF01::80]:<port> |
| local_address=address | 如果為非空,則為用于加入多播組的本地網絡接口的地址。 | ? |
| nak_delay_intervals=n | 初始nak之后nak之間的間隔數。 | 4 |
| nak_depth=n | 為了service repair requests而保留的數據報數(僅可靠)。 | 32 |
| nak_interval=msec | 兩次修復請求之間等待的最小毫秒數(僅可靠)。 | 500 |
| nak_max=n | The maximum number of times a missing sample will be nak'ed. | 3 |
| nak_timeout=msec | 放棄維修響應之前要等待的最大毫秒數(僅可靠)。 | 30000 |
| port_offset=n | 未指定組地址時用于設置端口號。 指定組地址后,將使用其中的端口號。 如果未指定組地址,則將端口偏移量用作端口號。 此值不應設置為小于49152。 | 49152 |
| rcv_buffer_size=n | 套接字接收緩沖區的大小(以字節為單位)。 零值表示使用系統默認值。 | 0 |
| reliable=[0|1] | 使能可靠的通信 | 1 |
| syn_backoff=n | 握手重試期間使用的指數基; 較小的值會縮短嘗試之間的延遲。 | 2.0 |
| syn_interval=msec | 關聯期間,等待握手嘗試的最小毫秒數。 | 250 |
| syn_timeout=msec | 關聯期間,放棄握手響應之前要等待的最大毫秒數。 | 30000 |
| ttl=n | 發送的任何數據報的生存時間(ttl)字段的值。 默認值為1表示所有數據都限于本地網絡。 | 1 |
| async_send=[0|1] | 使用異步I / O(在有效支持它的平臺上)發送數據報。 | ? |
[RTPS_UDP Configuration Options]
| Option | Description | Default |
| use_multicast=[0|1] | rtps_udp傳輸可以使用單播或多播。 設置為0(false)時,傳輸將使用單播,否則,值1(true)將使用多播。 | 1 |
| multicast_group_address=network address | 將傳輸設置為多播時,這是應使用的多播網絡地址。 如果未為網絡地址指定端口,則將使用端口7401。 | 239.255.0.2:7401 |
| multicast_interface=iface | 指定此傳輸實例要使用的網絡接口。 這使用特定于平臺的格式來標識網絡接口。 在Linux系統上,這類似于eth0。如果未配置此值,則使用公共配置值DCPSDefaultAddress來設置多播接口。 | The system defaultinterface is used |
| local_address=addr:port | 將套接字綁定到給定的地址和端口。 可以省略端口,但必須在末尾加上“:”。 | System default |
| nak_depth=n | 為了service repair requests而保留的數據報數(僅可靠)。 | 32 |
| nak_response_delay=msec | 協議調整參數,允許RTPS Writer針對數據請求延遲否定確認的響應(以毫秒為單位)。 | 200 |
| heartbeat_period=msec | 協議調整參數,以毫秒為單位指定RTPS Writer 公告數據可用性的頻率。 | 1000 |
| heartbeat_response_delay=msec | 協議調整參數(以毫秒為單位),允許RTPS Reader延遲發送肯定或否定確認。 此參數用于減少網絡風暴的發生。 | 500 |
| handshake_timeout=msec | 關聯期間放棄握手響應之前要等待的最大毫秒數。 | 30000 |
| max_message_size | 最大消息大小。 默認值為最大UDP消息大小。 | 65466 |
| quick_reply_ratio | 調整參數,用于控制相對于heartbeat_ period和heartbeat_response_delay的新公告發生速度。 | 0.1 |
| ttl=n | 發送的任何多播數據報的生存時間(ttl)字段的值。 此值指定數據報在被網絡丟棄之前將經過的躍點數。 默認值1表示所有數據都限于本地網絡子網。 | 1 |
| DataRtpsRelayAddress=host:port | 指定用于RTPS消息的RtpsRelay的地址。 | ? |
| RtpsRelayOnly=[0|1] | 僅將RTPS消息發送到RtpsRelay(用于調試)。 | 0 |
| UseRtpsRelay=[0|1] | 將消息發送到RtpsRelay。 僅當設置了DataRtpsRelayAddress時,才會發送消息。 | 0 |
| DataStunServerAddress=host:port | 指定使用ICE時,用于RTPS的STUN服務器的地址。 | ? |
| UseIce=[0|1] | 為此傳輸實例啟用或禁用ICE。 | 0 |
[Shared-Memory Transport Configuration Options]
| Option | Description | Default |
| pool_size=bytes | 分配的單個共享內存池的大小。 | 16777216 (16MiB) |
| datalink_control_size=bytes | 為每個數據鏈路分配的控制區域的大小。 此分配來自pool_size定義的共享內存池 | 4096 (4 KiB) |
?
?
靜態配置示例:
配置文件:
[topic/MyTopic]
type_name=TestMsg::TestMsg
?
[endpoint/MyReader]
type=reader
topic=MyTopic
config=MyConfig
domain=34
participant=0123456789ab
entity=cdef01
?
[config/MyConfig]
transports=MyTransport
?
[transport/MyTransport]
transport_type=rtps_udp
use_multicast=0
local_address=1.2.3.4:30000
?
代碼:
DDS::DomainParticipantQos dp_qos;
domainParticipantFactory->get_default_participant_qos(dp_qos);
dp_qos.user_data.value.length(6);
dp_qos.user_data.value[0] = 0x01;
dp_qos.user_data.value[1] = 0x23;
dp_qos.user_data.value[2] = 0x45;
dp_qos.user_data.value[3] = 0x67;
dp_qos.user_data.value[4] = 0x89;
dp_qos.user_data.value[5] = 0xab;
?
DDS::DataReaderQos qos;
subscriber->get_default_datareader_qos(qos);
qos.user_data.value.length(3);
qos.user_data.value[0] = 0xcd;
qos.user_data.value[1] = 0xef;
qos.user_data.value[2] = 0x01;
總結
以上是生活随笔為你收集整理的OpenDDS 配置文件详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【TSP问题】基于人工鱼群算法求解TSP
- 下一篇: Android项目实战(三):实现第一次