CARLA
 
载入中...
搜索中...
未找到
HeaderPubSubTypes.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 HeaderPubSubTypes.h
17 * This header file contains the declaration of the serialization functions.
18 *
19 * This file was generated by the tool fastcdrgen.
20 */
21
22#ifndef _FAST_DDS_GENERATED_STD_MSGS_MSG_HEADER_PUBSUBTYPES_H_
23#define _FAST_DDS_GENERATED_STD_MSGS_MSG_HEADER_PUBSUBTYPES_H_
24// 引入Fast DDS中主题数据类型相关的头文件,提供了基础类和相关定义,用于后续继承等操作
25#include <fastdds/dds/topic/TopicDataType.hpp>
26// 引入MD5相关的工具头文件,可能用于消息的标识等与MD5相关的操作
27#include <fastrtps/utils/md5.h>
28// 引入自定义的Header头文件,推测其中定义了Header类型,是本TopicDataType要处理的数据类型
29#include "Header.h"
30// 检查GEN_API_VER宏定义,如果未定义或者其值不等于1,
31// 则报错提示生成的头文件与当前安装的Fast DDS不兼容,需用fastddsgen重新生成
32#if !defined(GEN_API_VER) || (GEN_API_VER != 1)
33#error \
34 Generated Header is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen.
35#endif // GEN_API_VER
36
37namespace std_msgs
38{
39 namespace msg
40 {
41 /*!
42 // 这个类代表了由用户在IDL文件中定义的类型Header的TopicDataType
43 // 它用于处理在Fast DDS框架下该类型数据在发布订阅过程中的相关操作,属于HEADER分组(可能用于文档组织等用途)
44 */
45 class HeaderPubSubType : public eprosima::fastdds::dds::TopicDataType
46 {
47 public:
48// 定义类型别名,方便代码中使用,表示该TopicDataType处理的实际数据类型为Header
49 typedef Header type;
50// 构造函数声明,使用eProsima_user_DllExport可能是用于导出符号,方便在动态链接库等场景使用该类
52// 析构函数声明,使用override关键字表示重写基类的虚析构函数,用于对象销毁时资源清理等工作
54// 序列化函数声明,用于将Header类型的数据(通过data指针传递,实际指向Header类型对象)
55 // 转换为可在网络传输或存储的序列化格式,存储到SerializedPayload_t类型的payload结构体中
57 void* data,
58 eprosima::fastrtps::rtps::SerializedPayload_t* payload) override;
59 // 反序列化函数声明,与serialize相反,从给定的序列化数据payload中还原出Header类型的数据
60 // 并存储到data所指向的内存空间中
62 eprosima::fastrtps::rtps::SerializedPayload_t* payload,
63 void* data) override;
64 // 获取序列化大小的函数提供者声明,返回一个可调用对象(std::function),
65 // 调用该对象可获取给定Header类型数据序列化后的大小(以uint32_t类型表示),
66 // 常用于内存分配等相关操作的预估等情况
67 eProsima_user_DllExport virtual std::function<uint32_t()> getSerializedSizeProvider(
68 void* data) override;
69 // 获取键值函数声明,用于从Header类型的数据中获取一个唯一标识该数据实例的键值,
70 // 存储到InstanceHandle_t类型的ihandle结构体中,可通过force_md5参数控制是否强制使用MD5算法等逻辑生成键值
72 void* data,
73 eprosima::fastrtps::rtps::InstanceHandle_t* ihandle,
74 bool force_md5 = false) override;
75 // 数据创建函数声明,用于创建Header类型的数据的内存空间(返回指向该内存空间的指针
76 eProsima_user_DllExport virtual void* createData() override;
77 // 数据删除函数声明,用于释放之前通过createData或其他方式分配的Header类型数据所占用的内存空间
79 void* data) override;
80 // 如果TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED这个宏定义存在(可能表示相关API支持判断是否有界的功能)
81 #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
82// 重写判断是否有界的函数,这里返回false,表示该数据类型不是有界的(具体含义依Fast DDS框架中此概念定义为准)
83 eProsima_user_DllExport inline bool is_bounded() const override
84 {
85 return false;
86 }
87
88 #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
89 // 如果TOPIC_DATA_TYPE_API_HAS_IS_PLAIN这个宏定义存在(可能表示相关API支持判断是否为普通类型的功能)
90 #ifdef TOPIC_DATA_TYPE_AP // 如果TOPIC_DATA_TYPE_API_HAS_IS_PLAIN)I_HAS_IS_PLAIN
91 // 重写判断是否为普通类型的函数,这里返回false,表示该数据类型不是普通类型(具体含义依Fast DDS框架中此概念定义为准)
92 eProsima_user_DllExport inline bool is_plain() const override
93 {
94 return false;
95 }
96 // 如果TOPIC_DATA_TYPE_API_HAS_IS_PLAIN这个宏定义存在(可能表示相关API支持判断是否为普通类型的功能)
97 #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN
98// 如果TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE这个宏定义存在(可能表示相关API支持构造样本的功能)
99 #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
100 // 重写构造样本的函数,这里直接返回false,可能表示不支持或未实现该数据类型的样本构造功能(具体依框架定义和需求判断)
101 eProsima_user_DllExport inline bool construct_sample(
102 void* memory) const override
103 {
104 (void)memory;
105 return false;
106 }
107 #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
108// MD5对象,可能用于计算数据的MD5值,比如在生成键值等操作中使用
109 MD5 m_md5;
110 // 用于存储键值等相关数据的缓冲区指针,具体用途根据相关函数操作确定
111 unsigned char* m_keyBuffer;
112 };
113 }
114}
115
116#endif // _FAST_DDS_GENERATED_STD_MSGS_MSG_HEADER_PUBSUBTYPES_H_
#define eProsima_user_DllExport
Definition CameraInfo.h:44
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 std::function< uint32_t()> getSerializedSizeProvider(void *data) override
virtual eProsima_user_DllExport bool deserialize(eprosima::fastrtps::rtps::SerializedPayload_t *payload, void *data) override
virtual eProsima_user_DllExport bool serialize(void *data, eprosima::fastrtps::rtps::SerializedPayload_t *payload) override
virtual eProsima_user_DllExport void deleteData(void *data) override
eProsima_user_DllExport HeaderPubSubType()
virtual eProsima_user_DllExport ~HeaderPubSubType() override