> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/holoscan/sdk-user-guide/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/holoscan/sdk-user-guide/_mcp/server.

# holoscan::FastDdsHoloscanEntityTypeSupport

> DDS TopicDataType implementation for HoloscanEntityData.

DDS TopicDataType implementation for [HoloscanEntityData](../structs/holoscanentitydata).

This class implements the FastDDS TopicDataType interface, enabling [HoloscanEntityData](../structs/holoscanentitydata) to be used as a DDS topic type. It handles:

* CDR serialization/deserialization using FastCDR
* Memory management for data instances
* Size calculation for DDS

```cpp showLineNumbers={false}
#include <holoscan/fastdds_holoscan_entity_type_support.hpp>
```

**Inherits from:** `eprosima::fastdds::dds::TopicDataType` (public)

---

## Constructors

### FastDdsHoloscanEntityTypeSupport \[#fastddsholoscanentitytypesupport]

#### Default

```cpp showLineNumbers={false}
holoscan::FastDdsHoloscanEntityTypeSupport::FastDdsHoloscanEntityTypeSupport()
```

Construct a new `FastDdsHoloscanEntityTypeSupport`.

Sets the type name to "holoscan::Entity" and configures for variable-size data.

Uses a 1MB initial max\_serialized\_type\_size for payload pool allocation. With FastDDS's default PREALLOCATED\_WITH\_REALLOC\_MEMORY\_MODE, larger messages (10-100+ MB tensors) will trigger automatic reallocation. The actual size per message is determined by calculate\_serialized\_size().

FastDDS 3.4.2 Bug: Documentation says to use 0 for unbounded types, but this causes a null pointer crash in TopicPayloadPoolProxy::reserve\_history().

#### Move

```cpp showLineNumbers={false}
holoscan::FastDdsHoloscanEntityTypeSupport::FastDdsHoloscanEntityTypeSupport(
    FastDdsHoloscanEntityTypeSupport &&
) = default
```

#### Copy (deleted)

```cpp showLineNumbers={false}
holoscan::FastDdsHoloscanEntityTypeSupport::FastDdsHoloscanEntityTypeSupport(
    const FastDdsHoloscanEntityTypeSupport &
) = delete
```

### Destructor \[#destructor]

### \~FastDdsHoloscanEntityTypeSupport

```cpp showLineNumbers={false}
holoscan::FastDdsHoloscanEntityTypeSupport::~FastDdsHoloscanEntityTypeSupport() override = default
```

Destructor.

---

## Assignment operators

### operator= \[#operator\_assign]

#### Move assign

```cpp showLineNumbers={false}
FastDdsHoloscanEntityTypeSupport & holoscan::FastDdsHoloscanEntityTypeSupport::operator=(
    FastDdsHoloscanEntityTypeSupport &&
) = default
```

#### Copy assign (deleted)

```cpp showLineNumbers={false}
FastDdsHoloscanEntityTypeSupport & holoscan::FastDdsHoloscanEntityTypeSupport::operator=(
    const FastDdsHoloscanEntityTypeSupport &
) = delete
```

---

## Methods

### serialize \[#serialize]

```cpp showLineNumbers={false}
bool holoscan::FastDdsHoloscanEntityTypeSupport::serialize(
    const void *data,
    eprosima::fastdds::rtps::SerializedPayload_t &payload,
    eprosima::fastdds::dds::DataRepresentationId_t data_representation
) override
```

Serialize [HoloscanEntityData](../structs/holoscanentitydata) to CDR format.

**Returns:** true on success, false on failure

**Parameters**

**`data`** `const void *`

Pointer to [HoloscanEntityData](../structs/holoscanentitydata) to serialize

---

**`payload`** `eprosima::fastdds::rtps::SerializedPayload_t &`

Output serialized payload

---

**`data_representation`** `eprosima::fastdds::dds::DataRepresentationId_t`

Data representation (CDR encoding)

---

### deserialize \[#deserialize]

```cpp showLineNumbers={false}
bool holoscan::FastDdsHoloscanEntityTypeSupport::deserialize(
    eprosima::fastdds::rtps::SerializedPayload_t &payload,
    void *data
) override
```

Deserialize CDR format to [HoloscanEntityData](../structs/holoscanentitydata).

**Returns:** true on success, false on failure

**Parameters**

**`payload`** `eprosima::fastdds::rtps::SerializedPayload_t &`

Input serialized payload

---

**`data`** `void *`

Pointer to [HoloscanEntityData](../structs/holoscanentitydata) to populate

---

### calculate\_serialized\_size \[#calculateserializedsize]

```cpp showLineNumbers={false}
uint32_t holoscan::FastDdsHoloscanEntityTypeSupport::calculate_serialized_size(
    const void *data,
    eprosima::fastdds::dds::DataRepresentationId_t data_representation
) override
```

Get the serialized size of a [HoloscanEntityData](../structs/holoscanentitydata) instance.

**Returns:** Size in bytes when serialized

**Parameters**

**`data`** `const void *`

Pointer to [HoloscanEntityData](../structs/holoscanentitydata)

---

**`data_representation`** `eprosima::fastdds::dds::DataRepresentationId_t`

Data representation (CDR encoding)

---

### create\_data \[#createdata]

```cpp showLineNumbers={false}
void * holoscan::FastDdsHoloscanEntityTypeSupport::create_data() override
```

Create a new [HoloscanEntityData](../structs/holoscanentitydata) instance.

**Returns:** Pointer to newly allocated [HoloscanEntityData](../structs/holoscanentitydata)

### delete\_data \[#deletedata]

```cpp showLineNumbers={false}
void holoscan::FastDdsHoloscanEntityTypeSupport::delete_data(
    void *data
) override
```

Delete a [HoloscanEntityData](../structs/holoscanentitydata) instance.

**Parameters**

**`data`** `void *`

Pointer to [HoloscanEntityData](../structs/holoscanentitydata) to delete

---

### compute\_key \[#computekey]

#### Check if this type has a key

```cpp showLineNumbers={false}
bool holoscan::FastDdsHoloscanEntityTypeSupport::compute_key(
    eprosima::fastdds::rtps::SerializedPayload_t &payload,
    eprosima::fastdds::rtps::InstanceHandle_t &handle,
    bool force_md5
) override
```

Check if this type has a key.

[HoloscanEntityData](../structs/holoscanentitydata) does not use keyed topics.

**Returns:** false (no key defined)

#### Single item

```cpp showLineNumbers={false}
bool holoscan::FastDdsHoloscanEntityTypeSupport::compute_key(
    const void *data,
    eprosima::fastdds::rtps::InstanceHandle_t &handle,
    bool force_md5
) override
```

Get key from data.

**Returns:** false (no key defined)

**Parameters**

**`data`** `const void *`

Pointer to data

---

**`handle`** `eprosima::fastdds::rtps::InstanceHandle_t &`

Output instance handle

---

**`force_md5`** `bool`

Force MD5 computation

---

### is\_bounded \[#isbounded]

```cpp showLineNumbers={false}
bool holoscan::FastDdsHoloscanEntityTypeSupport::is_bounded() const override
```

Check if this type is bounded.

**Returns:** false (variable-size type with serialized\_data vector)

### is\_plain \[#isplain]

```cpp showLineNumbers={false}
bool holoscan::FastDdsHoloscanEntityTypeSupport::is_plain(
    eprosima::fastdds::dds::DataRepresentationId_t
) const override
```

Check if this type is plain (all members have fixed size and no optional).

**Returns:** false (contains variable-size vector and string)