holoscan::HoloEntitySerializerBase

Beta
View as Markdown
template <typename EndpointT>
class HoloEntitySerializerBase

Shared HOLO/NDPL entity serializer core, parameterized on the endpoint type.

Implements the full PubSubEntitySerializer interface: entity serialize/deserialize using the “HOLO” wire format, and native-descriptor export/import using the NDPL envelope. Subclasses only provide the constructor (passing endpoint type and name).

EndpointT must provide: write(), read(), write_trivial_type(), read_trivial_type(), bytes_written(), bytes_remaining(), and constructors from vector<uint8_t>* (write), const vector<uint8_t>* (read), and (uint8_t*, size_t) (write into buffer).

#include <holoscan/holo_entity_serializer_base.hpp>

Template parameters

EndpointT
typename

Inherits from: nvidia::gxf::PubSubEntitySerializer (public)


Constructors

HoloEntitySerializerBase

holoscan::HoloEntitySerializerBase<EndpointT>::HoloEntitySerializerBase(holoscan::HoloEntitySerializerBase<EndpointT>::HoloEntitySerializerBase(
std::string serializer_name,
cudaStream_t cuda_stream = nullptr
)

Destructor

~HoloEntitySerializerBase

holoscan::HoloEntitySerializerBase<EndpointT>::~HoloEntitySerializerBase() override = defaultholoscan::HoloEntitySerializerBase<EndpointT>::~HoloEntitySerializerBase() override = default

Assignment operators

operator=

HoloEntitySerializerBase & holoscan::HoloEntitySerializerBase<EndpointT>::operator=(HoloEntitySerializerBase & holoscan::HoloEntitySerializerBase<EndpointT>::operator=(
const HoloEntitySerializerBase &
) = delete

Methods

serialize

nvidia::gxf::Expected<std::vector<uint8_t>> holoscan::HoloEntitySerializerBase<EndpointT>::serialize(
nvidia::gxf::Entity entity,
nvidia::gxf::Handle<nvidia::gxf::Allocator> allocator = nvidia::gxf::Handle<nvidia::gxf::Allocator>() nvidia::gxf::Handle<nvidia::gxf::Allocator> allocator = nvidia::gxf::Handle<nvidia::gxf::Allocator>()
) override

serialize_into

nvidia::gxf::Expected<size_t> holoscan::HoloEntitySerializerBase<EndpointT>::serialize_into(
nvidia::gxf::Entity entity,
uint8_t *buffer,
size_t buffer_size,
nvidia::gxf::Handle<nvidia::gxf::Allocator> allocator = nvidia::gxf::Handle<nvidia::gxf::Allocator>() nvidia::gxf::Handle<nvidia::gxf::Allocator> allocator = nvidia::gxf::Handle<nvidia::gxf::Allocator>()
) override

deserialize

nvidia::gxf::Expected<nvidia::gxf::Entity> holoscan::HoloEntitySerializerBase<EndpointT>::deserialize(
const std::vector<uint8_t> &data,
gxf_context_t context,
nvidia::gxf::Handle<nvidia::gxf::Allocator> allocator
) override

estimate_size

size_t holoscan::HoloEntitySerializerBase<EndpointT>::estimate_size(
nvidia::gxf::Entity entity
) override

supports_gpu_tensors

bool holoscan::HoloEntitySerializerBase<EndpointT>::supports_gpu_tensors() const override

supports_zero_copy

bool holoscan::HoloEntitySerializerBase<EndpointT>::supports_zero_copy() const override

supports_direct_buffer_serialization

bool holoscan::HoloEntitySerializerBase<EndpointT>::supports_direct_buffer_serialization() const override

supports_native_descriptors

bool holoscan::HoloEntitySerializerBase<EndpointT>::supports_native_descriptors() const override

export_native_descriptor

nvidia::gxf::Expected<void> holoscan::HoloEntitySerializerBase<EndpointT>::export_native_descriptor(
gxf_uid_t entity_uid,
gxf_context_t context,
nvidia::gxf::Handle<nvidia::gxf::Allocator> allocator,
nvidia::gxf::NativeDescriptorPayload &out_payload,
const std::string &protocol_name = ""
) override

import_native_descriptor

nvidia::gxf::Expected<nvidia::gxf::Entity> holoscan::HoloEntitySerializerBase<EndpointT>::import_native_descriptor(
const nvidia::gxf::NativeDescriptorPayload &payload,
gxf_context_t context,
nvidia::gxf::Handle<nvidia::gxf::Allocator> allocator
) override

name

const char * holoscan::HoloEntitySerializerBase<EndpointT>::name() const override

set_native_buffer_adapter

void holoscan::HoloEntitySerializerBase<EndpointT>::set_native_buffer_adapter(
std::shared_ptr<NativeBufferProtocolAdapter> adapter
)

set_cuda_stream

void holoscan::HoloEntitySerializerBase<EndpointT>::set_cuda_stream(
cudaStream_t stream
)

cuda_stream

cudaStream_t holoscan::HoloEntitySerializerBase<EndpointT>::cuda_stream() const

primitive_type_to_uint

static uint32_t holoscan::HoloEntitySerializerBase<EndpointT>::primitive_type_to_uint(
nvidia::gxf::PrimitiveType type
)

uint_to_primitive_type

static nvidia::gxf::PrimitiveType holoscan::HoloEntitySerializerBase<EndpointT>::uint_to_primitive_type(
uint32_t value
)

storage_type_to_uint

static uint32_t holoscan::HoloEntitySerializerBase<EndpointT>::storage_type_to_uint(
nvidia::gxf::MemoryStorageType type
)

uint_to_storage_type

static nvidia::gxf::MemoryStorageType holoscan::HoloEntitySerializerBase<EndpointT>::uint_to_storage_type(
uint32_t value
)

serialize_string

static expected<size_t, RuntimeError> holoscan::HoloEntitySerializerBase<EndpointT>::serialize_string(static expected<size_t, RuntimeError> holoscan::HoloEntitySerializerBase<EndpointT>::serialize_string(
const std::string &data,
EndpointT *endpoint
)

deserialize_string

static expected<std::string, RuntimeError> holoscan::HoloEntitySerializerBase<EndpointT>::deserialize_string(static expected<std::string, RuntimeError> holoscan::HoloEntitySerializerBase<EndpointT>::deserialize_string(
EndpointT *endpoint
)

ensure_type_ids

bool holoscan::HoloEntitySerializerBase<EndpointT>::ensure_type_ids(
gxf_context_t context
)

serialize_to_endpoint

nvidia::gxf::Expected<size_t> holoscan::HoloEntitySerializerBase<EndpointT>::serialize_to_endpoint(
nvidia::gxf::Entity entity,
EndpointT &endpoint,
nvidia::gxf::Handle<nvidia::gxf::Allocator> allocator
)

serialize_non_gpu_sideband

nvidia::gxf::Expected<std::vector<uint8_t>> holoscan::HoloEntitySerializerBase<EndpointT>::serialize_non_gpu_sideband(
nvidia::gxf::Entity entity
)

deserialize_non_gpu_sideband

nvidia::gxf::Expected<void> holoscan::HoloEntitySerializerBase<EndpointT>::deserialize_non_gpu_sideband(
const uint8_t *data,
size_t size,
nvidia::gxf::Entity &entity,
nvidia::gxf::Handle<nvidia::gxf::Allocator> allocator = nvidia::gxf::Handle<nvidia::gxf::Allocator>() nvidia::gxf::Handle<nvidia::gxf::Allocator> allocator = nvidia::gxf::Handle<nvidia::gxf::Allocator>()
)

stage_tensor_to_host

nvidia::gxf::Expected<std::vector<uint8_t>> holoscan::HoloEntitySerializerBase<EndpointT>::stage_tensor_to_host(
const void *gpu_ptr,
size_t size
)

stage_host_to_device

nvidia::gxf::Expected<void> holoscan::HoloEntitySerializerBase<EndpointT>::stage_host_to_device(
void *gpu_ptr,
const void *host_ptr,
size_t size
)

Types

ComponentType

NameValueDescription
kUnknown= 0
kTensor= 1
kTimestamp= 2
kMessage= 3
kMetadataDictionary= 4
kMessageLabel= 5

Member variables

NameTypeDescription
kFlagIsGpuTensor static constexpruint32_t
serializer_name_std::string
kMaxComponentNameLength static constexprsize_t
kMaxComponentDataSize static constexprsize_t
kMaxTensorBytes static constexprsize_t
kMaxMetadataItems static constexprsize_t
kMaxMessageLabelPaths static constexprsize_t
kMaxOperatorsPerPath static constexprsize_t
cuda_stream_cudaStream_t
native_adapter_std::shared_ptr< NativeBufferProtocolAdapter >
sequence_counter_std::atomic< uint32_t >

Inner classes

SerializationHeader

struct holoscan::HoloEntitySerializerBase::SerializationHeader
NameTypeDescription
magicuint32_t
versionuint32_t
num_componentsuint32_t
flagsuint32_t
total_sizeuint64_t

ComponentHeader

struct holoscan::HoloEntitySerializerBase::ComponentHeader
NameTypeDescription
type_iduint32_t
name_lengthuint32_t
data_sizeuint32_t
flagsuint32_t

TensorMetadata

struct holoscan::HoloEntitySerializerBase::TensorMetadata
NameTypeDescription
rankuint32_t
element_typeuint32_t
storage_typeuint32_t
bytes_per_elementuint64_t
total_bytesuint64_t
shapeuint64_t
stridesuint64_t