17.1.5.9. TypeSupport

class eprosima::fastdds::dds::TypeSupport : public std::shared_ptr<fastdds::dds::TopicDataType>

Class TypeSupport used to provide the DomainRTPSParticipant with the methods to serialize, deserialize and get the key of a specific data type. The user should created a class that inherits from this one, where Serialize and deserialize methods MUST be implemented.

Note

This class inherits from std::shared_ptr<TopicDataType>.

Subclassed by eprosima::fastdds::dds::builtin::TypeLookup_ReplyTypeSupport, eprosima::fastdds::dds::builtin::TypeLookup_RequestTypeSupport

Public Functions

TypeSupport() noexcept = default

Constructor.

TypeSupport(const TypeSupport &type) noexcept = default

Copy Constructor.

Parameters

type – Another instance of TypeSupport

TypeSupport(TypeSupport &&type) noexcept = default

Move Constructor.

Parameters

type – Another instance of TypeSupport

TypeSupport &operator=(const TypeSupport &type) noexcept = default

Copy Assignment.

Parameters

type – Another instance of TypeSupport

TypeSupport &operator=(TypeSupport &&type) noexcept = default

Move Assignment.

Parameters

type – Another instance of TypeSupport

inline explicit TypeSupport(fastdds::dds::TopicDataType *ptr)

TypeSupport constructor that receives a TopicDataType pointer.

The passed pointer will be managed by the TypeSupport object, so creating two TypeSupport from the same pointer or deleting the passed pointer will produce a runtime error.

Parameters

ptr

inline TypeSupport(fastrtps::types::DynamicPubSubType ptr)

TypeSupport constructor that receives a DynamicPubSubType.

It will copy the instance so the user will keep the ownership of his object.

Parameters

ptr

virtual ReturnCode_t register_type(DomainParticipant *participant) const

Registers the type on a participant.

Parameters

participantDomainParticipant where the type is going to be registered

Returns

RETCODE_BAD_PARAMETER if the type name is empty, RETCODE_PRECONDITION_NOT_MET if there is another type with the same name registered on the DomainParticipant and RETCODE_OK if it is registered correctly

virtual ReturnCode_t register_type(DomainParticipant *participant, std::string type_name) const

Registers the type on a participant.

Parameters
  • participantDomainParticipant where the type is going to be registered

  • type_name – Name of the type to register

Returns

RETCODE_BAD_PARAMETER if the type name is empty, RETCODE_PRECONDITION_NOT_MET if there is another type with the same name registered on the DomainParticipant and RETCODE_OK if it is registered correctly

inline virtual const std::string &get_type_name() const

Getter for the type name.

Returns

name of the data type

virtual bool serialize(void *data, fastrtps::rtps::SerializedPayload_t *payload)

Serializes the data.

Parameters
  • data – Pointer to data

  • payload – Pointer to payload

Returns

true if it is serialized correctly, false if not

virtual bool deserialize(fastrtps::rtps::SerializedPayload_t *payload, void *data)

Deserializes the data.

Parameters
  • payload – Pointer to payload

  • data – Pointer to data

Returns

true if it is deserialized correctly, false if not

inline virtual std::function<uint32_t()> get_serialized_size_provider(void *data)

Getter for the SerializedSizeProvider.

Parameters

data – Pointer to data

Returns

function

inline virtual void *create_data()

Creates new data.

Returns

Pointer to the data

inline virtual void delete_data(void *data)

Deletes data.

Parameters

data – Pointer to the data to delete

inline virtual bool get_key(void *data, InstanceHandle_t *i_handle, bool force_md5 = false)

Getter for the data key.

Parameters
  • data – Pointer to data

  • i_handle – InstanceHandle pointer to store the key

  • force_md5 – boolean to force md5 (default: false)

Returns

true if the key is returned, false if not

inline bool empty() const

Check if the TypeSupport is empty.

Returns

true if empty, false if not

inline virtual bool is_bounded() const

Checks if the type is bounded.

inline virtual bool is_plain() const

Checks if the type is plain.