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
55 RTPSMESSAGE_DEFAULT_SIZE)
126 uint32_t length_from_current_position)
130 if (other.
length - other.
pos < length_from_current_position)
138 msg.
length = length_from_current_position;
139 msg.
max_size = length_from_current_position;
171 wraps = message.wraps;
172 message.wraps =
false;
178 message.max_size = 0;
180 message.reserved_size = 0;
184 message.buffer =
nullptr;
190 wraps = message.wraps;
191 message.wraps =
false;
197 message.max_size = 0;
199 message.reserved_size = 0;
203 message.buffer =
nullptr;
212 assert(
buffer ==
nullptr);
225 assert(
wraps ==
false);
229 if (new_buffer ==
nullptr)
Contains the RTPS protocol implementation.
Endianness_t
This enumeration represents endianness types.
Definition Types.hpp:40
@ LITTLEEND
Little endianness.
Definition Types.hpp:44
constexpr Endianness_t DEFAULT_ENDIAN
Definition Types.hpp:80
uint8_t octet
Definition Types.hpp:83
void init(octet *buffer_ptr, uint32_t size)
Definition CDRMessage_t.hpp:208
octet * buffer
Pointer to the buffer where the data is stored.
Definition CDRMessage_t.hpp:244
uint32_t max_size
Max size of the message.
Definition CDRMessage_t.hpp:248
Endianness_t msg_endian
Endianness of the message.
Definition CDRMessage_t.hpp:254
~CDRMessage_t()
Definition CDRMessage_t.hpp:59
CDRMessage_t()
Definition CDRMessage_t.hpp:53
void reserve(uint32_t size)
Definition CDRMessage_t.hpp:222
static CDRMessage_t wrap_from_other_message(const CDRMessage_t &other, uint32_t length_from_current_position)
Wraps a portion of a CDRMessage_t into a new CDRMessage_t.
Definition CDRMessage_t.hpp:124
bool wraps
Definition CDRMessage_t.hpp:256
CDRMessage_t(const CDRMessage_t &message)
Definition CDRMessage_t.hpp:147
uint32_t reserved_size
Size allocated on buffer. May be higher than max_size.
Definition CDRMessage_t.hpp:250
uint32_t length
Current length of the message.
Definition CDRMessage_t.hpp:252
CDRMessage_t(CDRMessage_t &&message)
Definition CDRMessage_t.hpp:168
uint32_t pos
Read or write position.
Definition CDRMessage_t.hpp:246
CDRMessage_t(uint32_t size)
Constructor with maximum size.
Definition CDRMessage_t.hpp:71
CDRMessage_t(const SerializedPayload_t &payload)
Constructor to wrap a serialized payload.
Definition CDRMessage_t.hpp:96
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