这个示例展示了如何使用 PERSISTENCE:SQLITE3 内置插件从 C++ 代码和 eProsima Fast DDS XML 配置文件配置持久性服务。
C++ 示例解释
域参与者配置:
- 创建一个
DomainParticipantQos
对象,并通过添加属性来配置持久性服务插件,指定使用 SQLite3。 - 指定 SQLite 数据库文件名为
persistence.db
。 - 使用这些 QoS 设置创建一个域参与者。
- 创建一个
类型与类型支持的创建:
- 创建一个名为
persistence_topic_type
的结构体类型,用于定义将要传输的数据格式。 - 该结构体包含两个成员:一个无符号长整型
index
和一个字符串message
。这部分可以通过 IDL 文件和 Fast DDS-Gen 自动生成,但是这里是手动构建的。 - 将这两个成员添加到结构体中,并构建动态类型。
- 注册该类型以供数据写入和读取使用。
- 创建一个名为
创建主题、发布者和订阅者:
- 使用之前定义的类型创建一个主题(topic),名称为 “persistence_topic_name”。
- 创建默认 QoS 的发布者(Publisher)和订阅者(Subscriber)。
配置数据写入器 (DataWriter) 的持久性:
- 配置数据写入器的 QoS,设置其持久性为 TRANSIENT_DURABILITY_QOS,这意味着即使没有读者在线,数据也会被存储并在有读者连接时可用。
- 为数据写入器配置持久化 GUID,以便它能够使用持久性服务。
配置数据读取器 (DataReader) 的持久性:
- 类似于写入器,为数据读取器设置相同的持久性 QoS 和 GUID,以确保它能够正确接收已存储的数据。
注意事项
- 以上示例代码通过程序matically 创建所有实体(例如,数据类型及其支持)来实现自包含。用户也可以根据需要使用 IDL 文件与 Fast DDS-Gen 工具进行替换生成。
- 若需更多关于如何创建 DomainParticipants、DataReaders 和 DataWriters 的信息,可以参考相应的文档链接。
内容由零声教学AI助手提供,问题来源于学员提问