22#include <fastcdr/FastBuffer.h>
23#include <fastcdr/Cdr.h>
38 setName(
"carla_msgs::msg::dds_::LaneInvasionEvent_");
42 type_size += eprosima::fastcdr::Cdr::alignment(type_size, 4);
44 m_typeSize =
static_cast<uint32_t
>(type_size) + 4;
51 m_keyBuffer =
reinterpret_cast<unsigned char*
>(malloc(keyLength));
74 eprosima::fastcdr::FastBuffer fastbuffer(
reinterpret_cast<char*
>(payload->data), payload->max_size);
77 eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, eprosima::fastcdr::Cdr::DDS_CDR);
80 payload->encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS? CDR_BE : CDR_LE;
83 ser.serialize_encapsulation();
90 catch (eprosima::fastcdr::exception::NotEnoughMemoryException& )
97 payload->length =
static_cast<uint32_t
>(ser.getSerializedDataLength());
115 eprosima::fastcdr::FastBuffer fastbuffer(
reinterpret_cast<char*
>(payload->data), payload->length);
118 eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, eprosima::fastcdr::Cdr::DDS_CDR);
121 deser.read_encapsulation();
122 payload->encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS? CDR_BE : CDR_LE;
127 catch (eprosima::fastcdr::exception::NotEnoughMemoryException& )
139 return [data]() -> uint32_t
165 if (!m_isGetKeyDefined)
173 eprosima::fastcdr::FastBuffer fastbuffer(
reinterpret_cast<char*
>(
m_keyBuffer),
177 eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS);
182 m_md5.update(
m_keyBuffer,
static_cast<unsigned int>(ser.getSerializedDataLength()));
184 for (uint8_t i = 0; i < 16; ++i)
186 handle->value[i] =
m_md5.digest[i];
191 for (uint8_t i = 0; i < 16; ++i)
eprosima::fastrtps::rtps::InstanceHandle_t InstanceHandle_t
eprosima::fastrtps::rtps::SerializedPayload_t SerializedPayload_t
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
eProsima_user_DllExport LaneInvasionEventPubSubType()
virtual eProsima_user_DllExport bool serialize(void *data, eprosima::fastrtps::rtps::SerializedPayload_t *payload) override
unsigned char * m_keyBuffer
virtual eProsima_user_DllExport ~LaneInvasionEventPubSubType() 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 void deleteData(void *data) override
此类表示用户在IDL文件中定义的LaneInvasionEvent结构。这个类表示在IDL文件中用户定义的LaneInvasionEvent结构,通常用于处理车道入侵相关的消息事件,是整个消息结构体的主...
eProsima_user_DllExport void serialize(eprosima::fastcdr::Cdr &cdr) const
此函数使用CDR序列化方式对对象进行序列化。
eProsima_user_DllExport void deserialize(eprosima::fastcdr::Cdr &cdr)
此函数使用CDR序列化方式对对象进行反序列化。
static eProsima_user_DllExport size_t getCdrSerializedSize(const carla_msgs::msg::LaneInvasionEvent &data, size_t current_alignment=0)
此函数根据缓冲区对齐方式返回数据的序列化大小。
static eProsima_user_DllExport size_t getMaxCdrSerializedSize(size_t current_alignment=0)
此函数根据缓冲区对齐方式返回对象的最大序列化大小。
static eProsima_user_DllExport size_t getKeyMaxCdrSerializedSize(size_t current_alignment=0)
此函数根据缓冲区对齐方式返回对象的键(Key)的最大序列化大小。
eProsima_user_DllExport void serializeKey(eprosima::fastcdr::Cdr &cdr) const
此函数使用CDR序列化方式对对象的键(Key)成员进行序列化。
static eProsima_user_DllExport bool isKeyDefined()
此函数告知是否已为该类型定义了键(Key)。 该静态函数用于判断该类型是否已经定义了键(Key),返回布尔值表示是否已定义