19#ifndef FASTDDS_RTPS_COMMON__CDRMESSAGE_T_HPP
20#define FASTDDS_RTPS_COMMON__CDRMESSAGE_T_HPP
21#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC
23#include <fastdds/rtps/common/SerializedPayload.hpp>
24#include <fastdds/rtps/common/Types.hpp>
34#define RTPSMESSAGE_DEFAULT_SIZE 10500
35#define RTPSMESSAGE_COMMON_RTPS_PAYLOAD_SIZE 536
36#define RTPSMESSAGE_COMMON_DATA_PAYLOAD_SIZE 10000
37#define RTPSMESSAGE_HEADER_SIZE 20
38#define RTPSMESSAGE_SUBMESSAGEHEADER_SIZE 4
39#define RTPSMESSAGE_DATA_EXTRA_INLINEQOS_SIZE 4
40#define RTPSMESSAGE_INFOTS_SIZE 12
42#define RTPSMESSAGE_OCTETSTOINLINEQOS_DATASUBMSG 16
43#define RTPSMESSAGE_OCTETSTOINLINEQOS_DATAFRAGSUBMSG 28
44#define RTPSMESSAGE_DATA_MIN_LENGTH 24
60 if (buffer !=
nullptr && !wraps)
79 buffer = (
octet*)malloc(size);
106 buffer = payload.
data;
120 reserved_size = max_size;
123 buffer = (
octet*)malloc(max_size);
124 memcpy(buffer, message.
buffer, length);
135 wraps = message.wraps;
136 message.wraps =
false;
139 length = message.length;
141 max_size = message.max_size;
142 message.max_size = 0;
143 reserved_size = message.reserved_size;
144 message.reserved_size = 0;
145 msg_endian = message.msg_endian;
147 buffer = message.buffer;
148 message.buffer =
nullptr;
154 wraps = message.
wraps;
155 message.wraps =
false;
158 length = message.length;
160 max_size = message.max_size;
161 message.max_size = 0;
162 reserved_size = message.reserved_size;
163 message.reserved_size = 0;
164 msg_endian = message.msg_endian;
166 buffer = message.buffer;
167 message.buffer =
nullptr;
176 assert(buffer ==
nullptr);
182 reserved_size = size;
189 assert(wraps ==
false);
190 if (size > reserved_size)
192 octet* new_buffer = (
octet*) realloc(buffer, size);
193 if (new_buffer ==
nullptr)
200 reserved_size = size;
Endianness_t
This enumeration represents endianness types.
Definition Types.hpp:40
@ LITTLEEND
Little endianness.
Definition Types.hpp:44
unsigned char octet
Definition Types.hpp:83
constexpr Endianness_t DEFAULT_ENDIAN
Definition Types.hpp:80
Structure CDRMessage_t, contains a serialized message.
Definition CDRMessage_t.hpp:51
void init(octet *buffer_ptr, uint32_t size)
Definition CDRMessage_t.hpp:172
octet * buffer
Pointer to the buffer where the data is stored.
Definition CDRMessage_t.hpp:208
uint32_t max_size
Max size of the message.
Definition CDRMessage_t.hpp:212
Endianness_t msg_endian
Endianness of the message.
Definition CDRMessage_t.hpp:218
~CDRMessage_t()
Definition CDRMessage_t.hpp:58
CDRMessage_t()
Definition CDRMessage_t.hpp:53
void reserve(uint32_t size)
Definition CDRMessage_t.hpp:186
bool wraps
Definition CDRMessage_t.hpp:220
CDRMessage_t(const CDRMessage_t &message)
Definition CDRMessage_t.hpp:111
uint32_t reserved_size
Size allocated on buffer. May be higher than max_size.
Definition CDRMessage_t.hpp:214
uint32_t length
Current length of the message.
Definition CDRMessage_t.hpp:216
CDRMessage_t(CDRMessage_t &&message)
Definition CDRMessage_t.hpp:132
uint32_t pos
Read or write position.
Definition CDRMessage_t.hpp:210
CDRMessage_t(uint32_t size)
Constructor with maximum size.
Definition CDRMessage_t.hpp:70
CDRMessage_t(const SerializedPayload_t &payload)
Constructor to wrap a serialized payload.
Definition CDRMessage_t.hpp:95
Structure SerializedPayload_t.
Definition SerializedPayload.hpp:59
octet * data
Pointer to the data.
Definition SerializedPayload.hpp:68
uint16_t encapsulation
Encapsulation of the data as suggested in the RTPS 2.1 specification chapter 10.
Definition SerializedPayload.hpp:64
uint32_t max_size
Maximum size of the payload.
Definition SerializedPayload.hpp:70
uint32_t length
Actual length of the data.
Definition SerializedPayload.hpp:66
uint32_t pos
Position when reading.
Definition SerializedPayload.hpp:72