图书目录

第1章概述1

1.1体系集成需求1

1.1.1系统集成的问题2

1.1.2耦合性问题2

1.1.3复杂数据流问题3

1.2什么是数据分发服务4

1.3什么是中间件5

1.4网络通信模型5

1.5什么是“以数据为中心”7

1.6DDS对开发者有什么帮助8

第2章DDS架构11

2.1设计理念12

2.2可扩展的传输框架12

2.2.1以数据为中心的发布/订阅14

2.2.2数据本地重构层15

2.3DDS的发现15

2.4线程处理17

2.5配置17

2.6DCPS通信17

2.6.1DCPS通信概述17

2.6.2域和域参与者21

2.6.3数据写入者和发布者23

2.6.4数据读取者和订阅者23

2.6.5主题、实例与关键字24

2.6.6服务质量(QoS)策略控制通信行为27

2.6.7监听器28

2.6.8条件28

第3章数据类型和数据样本29

3.1数据类型概述30

3.1.1序列31

3.1.2字符串和宽字符串31

3.1.3类型代码31

3.2内置数据类型32

3.2.1注册内置类型32

3.2.2为内置类型创建主题33

3.2.3字符串内置类型34

3.2.4关键字字符串内置类型36

3.2.5管理内置数据类型的内存39

3.2.6内置数据类型的类型代码41

3.3使用IDL创建用户数据类型42

3.3.1可变长度类型43

3.3.2值类型44

目录数据分发服务——以数据为中心的发布/订阅式通信3.4与用户数据类型动态互动45

3.4.1类型代码概述45

3.4.2定义新类型46

3.5使用数据样本46

3.5.1具体类型的对象47

3.5.2动态定义数据类型的对象47

第4章服务质量(QoS)策略49

4.1QoS策略概述49

4.1.1默认QoS策略49

4.1.2DEADLINE(截止期限(T,DR,DW))54

4.1.3DESTINATION_ORDER(目标顺序(T,DR))54

4.1.4DURABILITY(持久性(T,DR,DW))55

4.1.5ENTITY_FACTORY(实体工厂(DP,Pub,Sub))56

4.1.6GROUP_DATA(组数据(Pub,Sub))57

4.1.7HISTORY(历史(T,DW,DR))58

4.1.8LATENCY_BUDGET(时延预算(T,DR,DW))59

4.1.9LIFESPAN(寿命(T,DW))61

4.1.10LIVELINESS(活跃度(T,DW,DR))62

4.1.11OWNERSHIP、OWNERSHIP STRENGTH(所有权(T)、

所有权强度(DW)) 63

4.1.12PARTITION(分割(Pub,Sub))64

4.1.13PRESENTATION(呈现(Pub,Sub))65

4.1.14READER_DATA_LIFECYCLE(读取者数据生命周期(DR))66

4.1.15RELIABILITY(可靠性(T,DW,DR))67

4.1.16RESOURCE_LIMITS(资源限制(T,DW,DR))68

4.1.17TIME_BASED_FILTER(基于时间的过滤(DR))69

4.1.18TOPIC_DATA(主题数据(T))69

4.1.19TRANSPORT_PRIORITY(传输优先级(T,DW))70

4.1.20USER_DATA(用户数据(T,DP,DR,DW))71

4.1.21WRITER_DATA_LIFECYCLE(写入者数据生命周期(DW))72

4.1.22DURABILITY_SERVICE(持久性服务(DW))72

4.1.23OWNERSHIP_STRENGTH(所有权强度(DW))73

4.2策略示例73

第5章实体75

5.1所有实体的一般操作75

5.1.1创建和删除实体76

5.1.2启用实体76

5.1.3获取实体的实例句柄77

5.1.4获取状态和状态改变77

5.1.5获取和设置监听器78

5.1.6获取状态条件78

5.1.7获取和设置服务质量策略78

5.2实体的服务质量策略79

5.2.1QoS请求vs.提供兼容性——RxO属性79

5.2.2C语言的特殊服务质量策略处理80

5.3通信状态81

5.4监听器实体83

5.4.1监听器的类型83

5.4.2创建和删除监听器84

第6章主题86

6.1主题概述86

6.1.1创建主题86

6.1.2删除主题89

6.1.3设置主题的服务质量策略89

6.2内容过滤主题92

6.2.1内容过滤主题概述92

6.2.2过滤器适用的地方——发布与订阅方93

6.2.3创建内容过滤主题93

6.2.4删除内容过滤主题95

6.2.5使用内容过滤主题95

第7章发送数据96

7.1发送数据的步骤96

7.2发布者97

7.2.1显式与隐式地创建发布者97

7.2.2创建发布者100

7.2.3删除发布者101

7.2.4设置发布者的服务质量策略101

7.2.5创建发布者监听器107

7.2.6寻找一个发布者的相关实体108

7.2.7等待应答109

7.2.8发布者状态109

7.2.9暂停和恢复发布109

7.3数据写入者109

7.3.1创建数据写入者111

7.3.2获取所有数据写入者113

7.3.3删除数据写入者113

7.3.4创建数据写入者监听器113

7.3.5检查数据写入者的状态114

7.3.6数据写入者的状态115

7.3.7使用一个类型特定数据写入者(FooDataWriter)121

7.3.8写入数据122

7.3.9刷新批量数据样本124

7.3.10写入相关数据样本组124

7.3.11等待应答125

7.3.12管理数据实例(使用关键字控数据类型)125

7.3.13设置数据写入者服务质量策略128

7.3.14实体间的导航关系135

7.3.15断言活跃度136

第8章接收数据137

8.1接收数据的步骤137

8.1.1接收数据的准备137

8.1.2使用一种机制接收数据138

8.2订阅者139

8.2.1显式与隐式地创建订阅者141

8.2.2创建订阅者142

8.2.3删除订阅者143

8.2.4设置订阅者服务质量策略144

8.2.5开始和终止组顺序的访问149

8.2.6设置订阅者监听器149

8.2.7用特定样本获取数据读取者151

8.2.8寻找一个订阅者的相关实体152

8.2.9订阅者的状态152

8.3数据读取者153

8.3.1创建数据读取者155

8.3.2获取所有数据读取者157

8.3.3删除数据读取者157

8.3.4建立数据读取者监听器157

8.3.5检查数据读取者状态和状态条件158

8.3.6等待历史数据160

8.3.7数据读取者的状态160

8.3.8设置数据读取者服务质量策略168

8.3.9实体间的导航关系172

8.4使用数据读取者访问数据(读取或获取)173

8.4.1使用类型指定数据读取者(FooDataReader)173

8.4.2借出和返回数据以及样本信息序列174

8.4.3用读取或提取访问数据样本175

第9章使用域178

9.1域和域参与者的基本原理178

9.2域参与者工厂180

9.2.1设置域参与者工厂QoS策略181

9.2.2获取和设置域参与者的默认QoS策略182

9.2.3释放域参与者工厂所用资源183

9.2.4查找域参与者183

9.2.5从QoS策略配置文件获取QoS策略值183

9.3域参与者184

9.3.1创建域参与者187

9.3.2删除域参与者189

9.3.3删除包括的实体189

9.3.4选择域ID和创建多个域189

9.3.5建立域参与者监听器190

9.3.6设置域参与者QoS策略192

9.3.7查找主题描述197

9.3.8寻找主题197

9.3.9获取隐式发布者或订阅者198

9.3.10断言活跃度199

第10章条件和监听器200

10.1条件和监听器概述200

10.2通信状态类型200

10.2.1主题状态类型200

10.2.2订阅者状态类型201

10.2.3数据读取者状态类型201

10.2.4数据写入者状态类型203

10.3定义监听器205

10.3.1主题监听器206

10.3.2数据写入者监听器206

10.3.3发布者监听器207

10.3.4数据读取者监听器207

10.3.5订阅者监听器207

10.3.6域参与者监听器207

10.4定义条件208

10.4.1状态条件208

10.4.2附加的条件类型209

第11章配置OpenDDS210

11.1配置方式210

11.2通用配置选项211

11.3发现配置213

11.3.1域配置213

11.3.2为DCPSInfoRepo配置应用程序215

11.3.3为DDSRTPS发现配置219

11.4传输配置221

11.4.1传输配置概述222

11.4.2配置文件示例222

11.4.3传输注册示例225

11.4.4传输配置选项225

11.4.5传输实例选项226

11.5记录232

11.5.1DCPS层记录232

11.5.2传输层记录233

第12章开始使用234

12.1规定遵从234

12.1.1DDS规定遵从234

12.1.2DDSRTPS规定遵从234

12.2使用DCPS235

12.2.1定义数据类型235

12.2.2处理IDL236

12.2.3一个简单的消息发布者238

12.2.4建立订阅者242

12.2.5数据读取者监听器实行244

12.2.6清理OpenDDS客户端246

12.2.7运行示例247

12.2.8用RTPS运行示例248

12.3数据处理最佳化250

12.3.1在发布者中注册和使用实例250

12.3.2读取多个样本250

12.3.3零复制读取251

12.4构建一个应用程序252

12.4.1搭建开发环境252

12.4.2构建应用程序253

12.4.3数据类型定义254

12.4.4建立发布应用程序256

12.4.5建立订阅应用程序263

12.4.6运行应用程序269

参考文献275