24#include <fastcdr/CdrEncoding.hpp>
26#include "fastcdr/Cdr.h"
27#include "fastcdr/FastBuffer.h"
36 setName(
"UnderlayMessage");
38 type_size += eprosima::fastcdr::Cdr::alignment(
40 m_typeSize =
static_cast<uint32_t
>(type_size) + 4;
56 void* data, eprosima::fastrtps::rtps::SerializedPayload_t* payload) {
58 eprosima::fastcdr::FastBuffer fastbuffer(
59 reinterpret_cast<char*
>(payload->data),
61 eprosima::fastcdr::Cdr ser(
62 fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN,
63 eprosima::fastcdr::CdrVersion::DDS_CDR);
65 payload->encapsulation =
66 ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE
70 ser.serialize_encapsulation();
73 }
catch (eprosima::fastcdr::exception::Exception& e) {
74 AERROR <<
"serialize exception: " << e.what();
79 (uint32_t)ser.get_serialized_data_length();
84 eprosima::fastrtps::rtps::SerializedPayload_t* payload,
void* data) {
90 eprosima::fastcdr::FastBuffer fastbuffer(
91 reinterpret_cast<char*
>(payload->data), payload->length);
94 eprosima::fastcdr::Cdr deser(fastbuffer,
95 eprosima::fastcdr::Cdr::DEFAULT_ENDIAN,
96 eprosima::fastcdr::CdrVersion::DDS_CDR);
99 deser.read_encapsulation();
100 payload->encapsulation =
101 deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE
106 }
catch (eprosima::fastcdr::exception::Exception& e) {
107 AERROR <<
"deserialize exception: " << e.what();
115 return [data]() -> uint32_t {
131 void* data, eprosima::fastrtps::rtps::InstanceHandle_t* handle,
135 eprosima::fastcdr::FastBuffer fastbuffer(
140 eprosima::fastcdr::Cdr ser(fastbuffer,
141 eprosima::fastcdr::Cdr::BIG_ENDIANNESS);
146 static_cast<unsigned int>(ser.get_serialized_data_length()));
148 for (uint8_t i = 0; i < 16; ++i) {
149 handle->value[i] =
m_md5.digest[i];
152 for (uint8_t i = 0; i < 16; ++i) {
virtual bool serialize(void *data, eprosima::fastrtps::rtps::SerializedPayload_t *payload) override
virtual void deleteData(void *data) override
virtual ~UnderlayMessageType()
virtual bool deserialize(eprosima::fastrtps::rtps::SerializedPayload_t *payload, void *data) override
unsigned char * m_keyBuffer
virtual void * createData() override
virtual std::function< uint32_t()> getSerializedSizeProvider(void *data) override
virtual bool getKey(void *data, eprosima::fastrtps::rtps::InstanceHandle_t *ihandle, bool force_md5=false) override
This class represents the structure UnderlayMessage defined by the user in the IDL file.
void serializeKey(eprosima::fastcdr::Cdr &cdr) const
This function serializes the key members of an object using CDR serialization.
static bool isKeyDefined()
This function tells you if the Key has been defined for this type
static size_t getCdrSerializedSize(const UnderlayMessage &data, size_t current_alignment=0)
This function returns the serialized size of a data depending on the buffer alignment.
static size_t getMaxCdrSerializedSize(size_t current_alignment=0)
This function returns the maximum serialized size of an object depending on the buffer alignment.
void deserialize(eprosima::fastcdr::Cdr &cdr)
This function deserializes an object using CDR serialization.
static size_t getKeyMaxCdrSerializedSize(size_t current_alignment=0)
This function returns the maximum serialized size of the Key of an object depending on the buffer ali...
void serialize(eprosima::fastcdr::Cdr &cdr) const
This function serializes an object using CDR serialization.
#define RETURN_VAL_IF(condition, val)