// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima). // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /*! * @file DDSSampleMachinePubSubTypes.cpp * This header file contains the implementation of the serialization functions. * * This file was generated by the tool fastddsgen. */ #include "DDSSampleMachinePubSubTypes.hpp" #include #include #include "DDSSampleMachineCdrAux.hpp" #include "DDSSampleMachineTypeObjectSupport.hpp" using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t; using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t; using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t; namespace SampleModule { SampleConfigPubSubType::SampleConfigPubSubType() { set_name("SampleModule::SampleConfig"); uint32_t type_size = SampleModule_SampleConfig_max_cdr_typesize; type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ max_serialized_type_size = type_size + 4; /*encapsulation*/ is_compute_key_provided = false; uint32_t key_length = SampleModule_SampleConfig_max_key_cdr_typesize > 16 ? SampleModule_SampleConfig_max_key_cdr_typesize : 16; key_buffer_ = reinterpret_cast(malloc(key_length)); memset(key_buffer_, 0, key_length); } SampleConfigPubSubType::~SampleConfigPubSubType() { if (key_buffer_ != nullptr) { free(key_buffer_); } } bool SampleConfigPubSubType::serialize( const void* const data, SerializedPayload_t& payload, DataRepresentationId_t data_representation) { const SampleConfig* p_type = static_cast(data); // Object that manages the raw buffer. eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); // Object that serializes the data. eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; ser.set_encoding_flag( data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); try { // Serialize encapsulation ser.serialize_encapsulation(); // Serialize the object. ser << *p_type; ser.set_dds_cdr_options({0,0}); } catch (eprosima::fastcdr::exception::Exception& /*exception*/) { return false; } // Get the serialized length payload.length = static_cast(ser.get_serialized_data_length()); return true; } bool SampleConfigPubSubType::deserialize( SerializedPayload_t& payload, void* data) { try { // Convert DATA to pointer of your type SampleConfig* p_type = static_cast(data); // Object that manages the raw buffer. eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); // Object that deserializes the data. eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); // Deserialize encapsulation. deser.read_encapsulation(); payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; // Deserialize the object. deser >> *p_type; } catch (eprosima::fastcdr::exception::Exception& /*exception*/) { return false; } return true; } uint32_t SampleConfigPubSubType::calculate_serialized_size( const void* const data, DataRepresentationId_t data_representation) { try { eprosima::fastcdr::CdrSizeCalculator calculator( data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); size_t current_alignment {0}; return static_cast(calculator.calculate_serialized_size( *static_cast(data), current_alignment)) + 4u /*encapsulation*/; } catch (eprosima::fastcdr::exception::Exception& /*exception*/) { return 0; } } void* SampleConfigPubSubType::create_data() { return reinterpret_cast(new SampleConfig()); } void SampleConfigPubSubType::delete_data( void* data) { delete(reinterpret_cast(data)); } bool SampleConfigPubSubType::compute_key( SerializedPayload_t& payload, InstanceHandle_t& handle, bool force_md5) { if (!is_compute_key_provided) { return false; } SampleConfig data; if (deserialize(payload, static_cast(&data))) { return compute_key(static_cast(&data), handle, force_md5); } return false; } bool SampleConfigPubSubType::compute_key( const void* const data, InstanceHandle_t& handle, bool force_md5) { if (!is_compute_key_provided) { return false; } const SampleConfig* p_type = static_cast(data); // Object that manages the raw buffer. eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), SampleModule_SampleConfig_max_key_cdr_typesize); // Object that serializes the data. eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); eprosima::fastcdr::serialize_key(ser, *p_type); if (force_md5 || SampleModule_SampleConfig_max_key_cdr_typesize > 16) { md5_.init(); md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); md5_.finalize(); for (uint8_t i = 0; i < 16; ++i) { handle.value[i] = md5_.digest[i]; } } else { for (uint8_t i = 0; i < 16; ++i) { handle.value[i] = key_buffer_[i]; } } return true; } void SampleConfigPubSubType::register_type_object_representation() { register_SampleConfig_type_identifier(type_identifiers_); } SampleCommandPubSubType::SampleCommandPubSubType() { set_name("SampleModule::SampleCommand"); uint32_t type_size = SampleModule_SampleCommand_max_cdr_typesize; type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ max_serialized_type_size = type_size + 4; /*encapsulation*/ is_compute_key_provided = false; uint32_t key_length = SampleModule_SampleCommand_max_key_cdr_typesize > 16 ? SampleModule_SampleCommand_max_key_cdr_typesize : 16; key_buffer_ = reinterpret_cast(malloc(key_length)); memset(key_buffer_, 0, key_length); } SampleCommandPubSubType::~SampleCommandPubSubType() { if (key_buffer_ != nullptr) { free(key_buffer_); } } bool SampleCommandPubSubType::serialize( const void* const data, SerializedPayload_t& payload, DataRepresentationId_t data_representation) { const SampleCommand* p_type = static_cast(data); // Object that manages the raw buffer. eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); // Object that serializes the data. eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; ser.set_encoding_flag( data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); try { // Serialize encapsulation ser.serialize_encapsulation(); // Serialize the object. ser << *p_type; ser.set_dds_cdr_options({0,0}); } catch (eprosima::fastcdr::exception::Exception& /*exception*/) { return false; } // Get the serialized length payload.length = static_cast(ser.get_serialized_data_length()); return true; } bool SampleCommandPubSubType::deserialize( SerializedPayload_t& payload, void* data) { try { // Convert DATA to pointer of your type SampleCommand* p_type = static_cast(data); // Object that manages the raw buffer. eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); // Object that deserializes the data. eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); // Deserialize encapsulation. deser.read_encapsulation(); payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; // Deserialize the object. deser >> *p_type; } catch (eprosima::fastcdr::exception::Exception& /*exception*/) { return false; } return true; } uint32_t SampleCommandPubSubType::calculate_serialized_size( const void* const data, DataRepresentationId_t data_representation) { try { eprosima::fastcdr::CdrSizeCalculator calculator( data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); size_t current_alignment {0}; return static_cast(calculator.calculate_serialized_size( *static_cast(data), current_alignment)) + 4u /*encapsulation*/; } catch (eprosima::fastcdr::exception::Exception& /*exception*/) { return 0; } } void* SampleCommandPubSubType::create_data() { return reinterpret_cast(new SampleCommand()); } void SampleCommandPubSubType::delete_data( void* data) { delete(reinterpret_cast(data)); } bool SampleCommandPubSubType::compute_key( SerializedPayload_t& payload, InstanceHandle_t& handle, bool force_md5) { if (!is_compute_key_provided) { return false; } SampleCommand data; if (deserialize(payload, static_cast(&data))) { return compute_key(static_cast(&data), handle, force_md5); } return false; } bool SampleCommandPubSubType::compute_key( const void* const data, InstanceHandle_t& handle, bool force_md5) { if (!is_compute_key_provided) { return false; } const SampleCommand* p_type = static_cast(data); // Object that manages the raw buffer. eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), SampleModule_SampleCommand_max_key_cdr_typesize); // Object that serializes the data. eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); eprosima::fastcdr::serialize_key(ser, *p_type); if (force_md5 || SampleModule_SampleCommand_max_key_cdr_typesize > 16) { md5_.init(); md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); md5_.finalize(); for (uint8_t i = 0; i < 16; ++i) { handle.value[i] = md5_.digest[i]; } } else { for (uint8_t i = 0; i < 16; ++i) { handle.value[i] = key_buffer_[i]; } } return true; } void SampleCommandPubSubType::register_type_object_representation() { register_SampleCommand_type_identifier(type_identifiers_); } SampleMachineInfoPubSubType::SampleMachineInfoPubSubType() { set_name("SampleModule::SampleMachineInfo"); uint32_t type_size = SampleModule_SampleMachineInfo_max_cdr_typesize; type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ max_serialized_type_size = type_size + 4; /*encapsulation*/ is_compute_key_provided = false; uint32_t key_length = SampleModule_SampleMachineInfo_max_key_cdr_typesize > 16 ? SampleModule_SampleMachineInfo_max_key_cdr_typesize : 16; key_buffer_ = reinterpret_cast(malloc(key_length)); memset(key_buffer_, 0, key_length); } SampleMachineInfoPubSubType::~SampleMachineInfoPubSubType() { if (key_buffer_ != nullptr) { free(key_buffer_); } } bool SampleMachineInfoPubSubType::serialize( const void* const data, SerializedPayload_t& payload, DataRepresentationId_t data_representation) { const SampleMachineInfo* p_type = static_cast(data); // Object that manages the raw buffer. eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); // Object that serializes the data. eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; ser.set_encoding_flag( data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); try { // Serialize encapsulation ser.serialize_encapsulation(); // Serialize the object. ser << *p_type; ser.set_dds_cdr_options({0,0}); } catch (eprosima::fastcdr::exception::Exception& /*exception*/) { return false; } // Get the serialized length payload.length = static_cast(ser.get_serialized_data_length()); return true; } bool SampleMachineInfoPubSubType::deserialize( SerializedPayload_t& payload, void* data) { try { // Convert DATA to pointer of your type SampleMachineInfo* p_type = static_cast(data); // Object that manages the raw buffer. eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); // Object that deserializes the data. eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); // Deserialize encapsulation. deser.read_encapsulation(); payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; // Deserialize the object. deser >> *p_type; } catch (eprosima::fastcdr::exception::Exception& /*exception*/) { return false; } return true; } uint32_t SampleMachineInfoPubSubType::calculate_serialized_size( const void* const data, DataRepresentationId_t data_representation) { try { eprosima::fastcdr::CdrSizeCalculator calculator( data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); size_t current_alignment {0}; return static_cast(calculator.calculate_serialized_size( *static_cast(data), current_alignment)) + 4u /*encapsulation*/; } catch (eprosima::fastcdr::exception::Exception& /*exception*/) { return 0; } } void* SampleMachineInfoPubSubType::create_data() { return reinterpret_cast(new SampleMachineInfo()); } void SampleMachineInfoPubSubType::delete_data( void* data) { delete(reinterpret_cast(data)); } bool SampleMachineInfoPubSubType::compute_key( SerializedPayload_t& payload, InstanceHandle_t& handle, bool force_md5) { if (!is_compute_key_provided) { return false; } SampleMachineInfo data; if (deserialize(payload, static_cast(&data))) { return compute_key(static_cast(&data), handle, force_md5); } return false; } bool SampleMachineInfoPubSubType::compute_key( const void* const data, InstanceHandle_t& handle, bool force_md5) { if (!is_compute_key_provided) { return false; } const SampleMachineInfo* p_type = static_cast(data); // Object that manages the raw buffer. eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), SampleModule_SampleMachineInfo_max_key_cdr_typesize); // Object that serializes the data. eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); eprosima::fastcdr::serialize_key(ser, *p_type); if (force_md5 || SampleModule_SampleMachineInfo_max_key_cdr_typesize > 16) { md5_.init(); md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); md5_.finalize(); for (uint8_t i = 0; i < 16; ++i) { handle.value[i] = md5_.digest[i]; } } else { for (uint8_t i = 0; i < 16; ++i) { handle.value[i] = key_buffer_[i]; } } return true; } void SampleMachineInfoPubSubType::register_type_object_representation() { register_SampleMachineInfo_type_identifier(type_identifiers_); } SamplePointsPubSubType::SamplePointsPubSubType() { set_name("SampleModule::SamplePoints"); uint32_t type_size = SampleModule_SamplePoints_max_cdr_typesize; type_size += static_cast(eprosima::fastcdr::Cdr::alignment(type_size, 4)); /* possible submessage alignment */ max_serialized_type_size = type_size + 4; /*encapsulation*/ is_compute_key_provided = false; uint32_t key_length = SampleModule_SamplePoints_max_key_cdr_typesize > 16 ? SampleModule_SamplePoints_max_key_cdr_typesize : 16; key_buffer_ = reinterpret_cast(malloc(key_length)); memset(key_buffer_, 0, key_length); } SamplePointsPubSubType::~SamplePointsPubSubType() { if (key_buffer_ != nullptr) { free(key_buffer_); } } bool SamplePointsPubSubType::serialize( const void* const data, SerializedPayload_t& payload, DataRepresentationId_t data_representation) { const SamplePoints* p_type = static_cast(data); // Object that manages the raw buffer. eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.max_size); // Object that serializes the data. eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? eprosima::fastcdr::CdrVersion::XCDRv1 : eprosima::fastcdr::CdrVersion::XCDRv2); payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; ser.set_encoding_flag( data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR : eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2); try { // Serialize encapsulation ser.serialize_encapsulation(); // Serialize the object. ser << *p_type; ser.set_dds_cdr_options({0,0}); } catch (eprosima::fastcdr::exception::Exception& /*exception*/) { return false; } // Get the serialized length payload.length = static_cast(ser.get_serialized_data_length()); return true; } bool SamplePointsPubSubType::deserialize( SerializedPayload_t& payload, void* data) { try { // Convert DATA to pointer of your type SamplePoints* p_type = static_cast(data); // Object that manages the raw buffer. eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(payload.data), payload.length); // Object that deserializes the data. eprosima::fastcdr::Cdr deser(fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN); // Deserialize encapsulation. deser.read_encapsulation(); payload.encapsulation = deser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE; // Deserialize the object. deser >> *p_type; } catch (eprosima::fastcdr::exception::Exception& /*exception*/) { return false; } return true; } uint32_t SamplePointsPubSubType::calculate_serialized_size( const void* const data, DataRepresentationId_t data_representation) { try { eprosima::fastcdr::CdrSizeCalculator calculator( data_representation == DataRepresentationId_t::XCDR_DATA_REPRESENTATION ? eprosima::fastcdr::CdrVersion::XCDRv1 :eprosima::fastcdr::CdrVersion::XCDRv2); size_t current_alignment {0}; return static_cast(calculator.calculate_serialized_size( *static_cast(data), current_alignment)) + 4u /*encapsulation*/; } catch (eprosima::fastcdr::exception::Exception& /*exception*/) { return 0; } } void* SamplePointsPubSubType::create_data() { return reinterpret_cast(new SamplePoints()); } void SamplePointsPubSubType::delete_data( void* data) { delete(reinterpret_cast(data)); } bool SamplePointsPubSubType::compute_key( SerializedPayload_t& payload, InstanceHandle_t& handle, bool force_md5) { if (!is_compute_key_provided) { return false; } SamplePoints data; if (deserialize(payload, static_cast(&data))) { return compute_key(static_cast(&data), handle, force_md5); } return false; } bool SamplePointsPubSubType::compute_key( const void* const data, InstanceHandle_t& handle, bool force_md5) { if (!is_compute_key_provided) { return false; } const SamplePoints* p_type = static_cast(data); // Object that manages the raw buffer. eprosima::fastcdr::FastBuffer fastbuffer(reinterpret_cast(key_buffer_), SampleModule_SamplePoints_max_key_cdr_typesize); // Object that serializes the data. eprosima::fastcdr::Cdr ser(fastbuffer, eprosima::fastcdr::Cdr::BIG_ENDIANNESS, eprosima::fastcdr::CdrVersion::XCDRv2); ser.set_encoding_flag(eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2); eprosima::fastcdr::serialize_key(ser, *p_type); if (force_md5 || SampleModule_SamplePoints_max_key_cdr_typesize > 16) { md5_.init(); md5_.update(key_buffer_, static_cast(ser.get_serialized_data_length())); md5_.finalize(); for (uint8_t i = 0; i < 16; ++i) { handle.value[i] = md5_.digest[i]; } } else { for (uint8_t i = 0; i < 16; ++i) { handle.value[i] = key_buffer_[i]; } } return true; } void SamplePointsPubSubType::register_type_object_representation() { register_SamplePoints_type_identifier(type_identifiers_); } } // namespace SampleModule // Include auxiliary functions like for serializing/deserializing. #include "DDSSampleMachineCdrAux.ipp"