目录
src/dds 源码分析
源码结构
FastDDS中的src/cpp/dds目录包含了dds (Data Distribution Service)标准的实现。它分为几个子目录,每个子目录负责DDS实现的特定部分:
- core:该目录包含在整个DDS实现中使用的核心类和函数。这包括异常处理(如exception .cpp所示),以及基本类型和实用程序(如types.cpp所示)。
- domain:此目录包含DomainParticipant类的实现,它表示DDS域中的参与者。域是一个分布式系统,它允许发布者和订阅者相互通信。
- pub:该目录包含DDS发布端的实现,包括Publisher和DataWriter类。这些类用于将数据发布到DDS域。
- sub:该目录包含DDS订阅端的实现,包括订阅者和DataReader类。这些类用于订阅DDS域中的数据并接收更新。
- topic:此目录包含topic类的实现,它表示DDS域中的主题。主题是一个命名的数据类别,发布者可以向其发布,订阅者可以订阅。
Exception 分析
src/cpp/dds/Exception.cpp 和 include/dds/core/Exception.hpp 文件包含了 FastDDS 中异常处理相关的实现。这些异常类在 FastDDS 中用于处理错误情况,它们都继承自 C++ 标准库中的 std::exception 类。
我们首先看一下 include/dds/core/Exception.hpp 文件。这个头文件包含了多个异常类的声明,它们分别表示不同类型的错误。以下是一些主要的异常类:
- Error: 表示一般性的错误。
- UnsupportedError: 表示所请求的特性或操作不受支持。
- InvalidDataError: 表示提供的数据无效或不合法。
- OutOfResourcesError: 表示无法分配所需的资源(例如内存)。
- AlreadyClosedError: 表示试图操作一个已经关闭的实体。
- ApiError: 表示API调用时发生的错误。
- PreconditionNotMetError: 表示操作的先决条件未满足。
接下来,我们看一下 src/cpp/dds/Exception.cpp 文件。这个文件包含了异常类的实现,主要是构造函数和析构函数。这些构造函数为每个异常类提供了一个带有描述错误信息的字符串。当异常被抛出时,这个字符串可以被用于显示或记录错误信息。