CARLA
 
载入中...
搜索中...
未找到
TF2ErrorPubSubTypes.h
浏览该文件的文档.
1// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15/*!
16 * @file TF2ErrorPubSubTypes.h
17 * This header file contains the declaration of the serialization functions.
18 *
19 * This file was generated by the tool fastcdrgen.
20 */
21// 防止头文件重复包含的宏定义开始。如果 _FAST_DDS_GENERATED_TF2_MSGS_MSG_TF2ERROR_PUBSUBTYPES_H_ 未被定义,
22// 则进入下面的定义部分,避免同一个头文件被多次包含导致编译错误(如重复定义等问题)
23#ifndef _FAST_DDS_GENERATED_TF2_MSGS_MSG_TF2ERROR_PUBSUBTYPES_H_
24#define _FAST_DDS_GENERATED_TF2_MSGS_MSG_TF2ERROR_PUBSUBTYPES_H_
25// 包含 Fast DDS 中用于定义主题数据类型(TopicDataType)相关的头文件,
26// 该头文件提供了与发布/订阅系统中数据类型处理相关的基础类和接口等内容
27#include <fastdds/dds/topic/TopicDataType.hpp>
28// 包含 Fast RTPS 中用于计算 MD5 哈希值的工具头文件,可能用于数据标识、校验等相关操作
29#include <fastrtps/utils/md5.h>
30// 包含 TF2Error.h 头文件,推测这里面定义了 TF2Error 类型相关的声明或定义,
31// 是当前要处理的数据类型的具体结构体或类等的相关头文件
32#include "TF2Error.h"
33// 如果没有定义 GEN_API_VER 宏,或者定义了但值不等于 1
34#if !defined(GEN_API_VER) || (GEN_API_VER != 1)
35// 输出错误提示信息,表明生成的 TF2Error 类型与当前安装的 Fast DDS 不兼容,
36// 提示需要使用 fastddsgen 工具重新生成该类型相关代码
37#error \
38 Generated TF2Error is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen.
39#endif // GEN_API_VER
40// tf2_msgs 命名空间开始,可能用于组织与 TF2 相关的消息类型等内容
41namespace tf2_msgs
42{
43 namespace msg
44 {
45 /*!
46 * 这个类表示在 IDL(接口定义语言)文件中由用户定义的 TF2Error 类型的主题数据类型(TopicDataType)。
47 * @ingroup 可能用于文档生成等相关的分组标识(比如分组展示文档等),此处表示与 TF2ERROR 相关的分组。
48 */
49 class TF2ErrorPubSubType : public eprosima::fastdds::dds::TopicDataType
50 {
51 public:
52 // 定义类型别名,将 TF2Error 类型别名为 type,方便在代码中使用,
53 // 使得代码中使用 type 就等同于使用 TF2Error 类型,增强代码可读性和可维护性
54 typedef TF2Error type;
55 // 这是 TF2ErrorPubSubType 类的默认构造函数,用于创建该类的对象实例,
56 // 可能在构造过程中进行一些初始化操作(比如初始化与数据类型处理相关的内部状态等)
58 // 这是 TF2ErrorPubSubType 类的虚析构函数,用于在对象生命周期结束时进行资源清理等相关操作,
59 // 由于该类继承自其他基类(eprosima::fastdds::dds::TopicDataType),使用虚析构函数可以确保正确地析构派生类对象,
60 // 避免内存泄漏等问题,尤其是在通过基类指针删除派生类对象的情况下
62 //这个虚函数用于将给定的数据(通过 data 指针指向)按照特定的序列化规则转换为 SerializedPayload_t 结构(一种用于存储序列化后数据的结构体),
63 //并将序列化结果存储在 payload 指针指向的 SerializedPayload_t 结构体中。如果序列化成功则返回 true,否则返回 false。
64 //它是实现数据发布功能的重要一环,因为发布数据时需要先将数据进行序列化以便在网络等环境中传输。
66 void* data,
67 eprosima::fastrtps::rtps::SerializedPayload_t* payload) override;
68 //这个虚函数与 serialize 函数相对应,用于将 SerializedPayload_t 结构(通过 payload 指针指向,里面存储着序列化后的数据)中的数据,
69 //按照相应的反序列化规则还原到 data 指针指向的内存空间中,即将接收到的序列化数据重新转换为原始的数据结构形式。
70 //如果反序列化成功则返回 true,否则返回 false,它是实现数据订阅功能的关键部分,用于接收并解析订阅到的数据。
72 eprosima::fastrtps::rtps::SerializedPayload_t* payload,
73 void* data) override;
74//这个虚函数返回一个函数对象(std::function<uint32_t()> 类型),该函数对象在被调用时能够返回给定数据(通过 data 指针指向)序列化后的尺寸(以 uint32_t 类型表示字节数)。
75 eProsima_user_DllExport virtual std::function<uint32_t()> getSerializedSizeProvider(
76 void* data) override;
77 //这个虚函数用于获取与给定数据(通过 data 指针指向)相关联的键(Key),键通常用于在发布/订阅系统中唯一标识一个数据实例等用途。
78 //提取到的键会存储在 ihandle 指针指向的 InstanceHandle_t 结构体中。
79 //如果 force_md5 参数为 true,则强制使用 MD5(可能通过内部的 m_md5 对象来计算)来生成键;如果为 false,则优先使用其他可用的方法(如果存在)获取键。
80 //如果获取键成功则返回 true,否则返回 false。
82 void* data,
83 eprosima::fastrtps::rtps::InstanceHandle_t* ihandle,
84 bool force_md5 = false) override;
85 //这个虚函数用于创建该数据类型(TF2Error)的一个新实例,并返回指向这个新创建的数据实例的指针。
86 //在一些场景中,比如接收新的数据时可能需要动态创建对应的数据对象来存储解析后的数据,就会调用这个函数。
87 eProsima_user_DllExport virtual void* createData() override;
88 //这个虚函数用于删除一个该数据类型(TF2Error)的实例,通过传入指向要删除的数据实例的指针(通过 data 指针指向)来执行删除操作,
89 //进行内存释放等资源清理工作,确保对象生命周期结束时正确地回收资源。
91 void* data) override;
92
93 #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
94 //如果宏 TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED 被定义,那么这个内联函数用于表明该数据类型是否是有界的(bounded)。
95 //返回 true 表示是有界的,返回 false 表示不是有界的。有界数据类型通常在一些资源分配、数据范围限制等方面有特定含义,具体取决于系统设计。
96 eProsima_user_DllExport inline bool is_bounded() const override
97 {
98 return false;
99 }
100
101 #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
102
103 #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN
104 //如果宏 TOPIC_DATA_TYPE_API_HAS_IS_PLAIN 被定义,那么这个内联函数用于表明该数据类型是否是简单的(plain)。
105 //返回 true 表示是简单的,返回 false 表示不是简单的。简单数据类型可能在序列化、存储等方面有相对简单的处理方式,具体也取决于系统定义。
106 eProsima_user_DllExport inline bool is_plain() const override
107 {
108 return false;
109 }
110
111 #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN
112
113 #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
114 //如果宏 TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE 被定义,那么这个内联函数用于构造该数据类型的一个样本(sample)。
115 //通过传入指向内存空间(通过 memory 指针指向)的指针,尝试在这块内存上构造出一个符合该数据类型的样本数据结构。
116 //如果构造成功则返回 true,否则返回 false。
117 eProsima_user_DllExport inline bool construct_sample(
118 void* memory) const override
119 {
120 (void)memory;
121 return false;
122 }
123
124 #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
125 // MD5 类型的成员变量 m_md5,用于计算数据的 MD5 哈希值,可能在生成键(Key)等操作中会用到,
126 // 以提供一种唯一标识数据或者进行数据校验等功能的手段
127 MD5 m_md5;
128 // 指向字节数组的指针成员变量 m_keyBuffer,可能用于临时存储生成的键(Key)数据等相关用途,
129 // 具体使用方式取决于类内部的实现逻辑
130 unsigned char* m_keyBuffer;
131 };
132 }
133}
134
135#endif // _FAST_DDS_GENERATED_TF2_MSGS_MSG_TF2ERROR_PUBSUBTYPES_H_
#define eProsima_user_DllExport
Definition CameraInfo.h:44
virtual eProsima_user_DllExport void deleteData(void *data) override
virtual eProsima_user_DllExport std::function< uint32_t()> getSerializedSizeProvider(void *data) override
virtual eProsima_user_DllExport bool serialize(void *data, eprosima::fastrtps::rtps::SerializedPayload_t *payload) override
virtual eProsima_user_DllExport ~TF2ErrorPubSubType() override
virtual eProsima_user_DllExport bool getKey(void *data, eprosima::fastrtps::rtps::InstanceHandle_t *ihandle, bool force_md5=false) override
virtual eProsima_user_DllExport void * createData() override
virtual eProsima_user_DllExport bool deserialize(eprosima::fastrtps::rtps::SerializedPayload_t *payload, void *data) override
eProsima_user_DllExport TF2ErrorPubSubType()