Skip to content

Commit

Permalink
Maintain xtypes serialization to previous encoding version to maintai…
Browse files Browse the repository at this point in the history
…n interop (#3893)

* Refs #18687. Change xtype serialization to XCDRv1

Signed-off-by: Ricardo González Moreno <[email protected]>

* Refs #18687. Not set struct_flags to maintain interop

Signed-off-by: Ricardo González Moreno <[email protected]>

* Refs #18687. Fix test

Signed-off-by: Ricardo González Moreno <[email protected]>

---------

Signed-off-by: Ricardo González Moreno <[email protected]>
  • Loading branch information
richiware committed Sep 29, 2023
1 parent 7057142 commit e86a936
Show file tree
Hide file tree
Showing 23 changed files with 1,600 additions and 1,603 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ const TypeObject* GetMinimalHelloWorldObject()
type_object->minimal()._d(TK_STRUCTURE);

type_object->minimal().struct_type().struct_flags().IS_FINAL(false);
type_object->minimal().struct_type().struct_flags().IS_APPENDABLE(true);
type_object->minimal().struct_type().struct_flags().IS_APPENDABLE(false);
type_object->minimal().struct_type().struct_flags().IS_MUTABLE(false);
type_object->minimal().struct_type().struct_flags().IS_NESTED(false);
type_object->minimal().struct_type().struct_flags().IS_AUTOID_HASH(false); // Unsupported
Expand Down Expand Up @@ -146,15 +146,15 @@ const TypeObject* GetMinimalHelloWorldObject()
TypeIdentifier identifier;
identifier._d(EK_MINIMAL);

eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
size_t current_alignment {0};
SerializedPayload_t payload(static_cast<uint32_t>(
calculator.calculate_serialized_size(type_object->minimal().struct_type(), current_alignment) + 4));
eprosima::fastcdr::FastBuffer fastbuffer((char*) payload.data, payload.max_size);
// Fixed endian (Page 221, EquivalenceHash definition of Extensible and Dynamic Topic Types for DDS document)
eprosima::fastcdr::Cdr ser(
fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN,
eprosima::fastcdr::CdrVersion::XCDRv2); // Object that serializes the data.
fastbuffer, eprosima::fastcdr::Cdr::LITTLE_ENDIANNESS,
eprosima::fastcdr::CdrVersion::XCDRv1); // Object that serializes the data.
payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;

ser << *type_object;
Expand Down Expand Up @@ -185,7 +185,7 @@ const TypeObject* GetCompleteHelloWorldObject()
type_object->complete()._d(TK_STRUCTURE);

type_object->complete().struct_type().struct_flags().IS_FINAL(false);
type_object->complete().struct_type().struct_flags().IS_APPENDABLE(true);
type_object->complete().struct_type().struct_flags().IS_APPENDABLE(false);
type_object->complete().struct_type().struct_flags().IS_MUTABLE(false);
type_object->complete().struct_type().struct_flags().IS_NESTED(false);
type_object->complete().struct_type().struct_flags().IS_AUTOID_HASH(false); // Unsupported
Expand Down Expand Up @@ -230,15 +230,15 @@ const TypeObject* GetCompleteHelloWorldObject()
TypeIdentifier identifier;
identifier._d(EK_COMPLETE);

eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
size_t current_alignment {0};
SerializedPayload_t payload(static_cast<uint32_t>(
calculator.calculate_serialized_size(type_object->complete().struct_type(), current_alignment) + 4));
eprosima::fastcdr::FastBuffer fastbuffer((char*) payload.data, payload.max_size);
// Fixed endian (Page 221, EquivalenceHash definition of Extensible and Dynamic Topic Types for DDS document)
eprosima::fastcdr::Cdr ser(
fastbuffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN,
eprosima::fastcdr::CdrVersion::XCDRv2); // Object that serializes the data.
fastbuffer, eprosima::fastcdr::Cdr::LITTLE_ENDIANNESS,
eprosima::fastcdr::CdrVersion::XCDRv1); // Object that serializes the data.
payload.encapsulation = ser.endianness() == eprosima::fastcdr::Cdr::BIG_ENDIANNESS ? CDR_BE : CDR_LE;

ser << *type_object;
Expand Down
4 changes: 2 additions & 2 deletions src/cpp/dynamic-types/AnnotationParameterValue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ size_t ExtendedAnnotationParameterValue::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down Expand Up @@ -1256,7 +1256,7 @@ size_t AnnotationParameterValue::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down
336 changes: 168 additions & 168 deletions src/cpp/dynamic-types/BuiltinAnnotationsTypeObject.cpp

Large diffs are not rendered by default.

84 changes: 42 additions & 42 deletions src/cpp/dynamic-types/DynamicTypeBuilderFactory.cpp

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/cpp/dynamic-types/TypeIdentifier.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1095,7 +1095,7 @@ size_t TypeIdentifier::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down
22 changes: 11 additions & 11 deletions src/cpp/dynamic-types/TypeIdentifierTypes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ size_t StringSTypeDefn::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down Expand Up @@ -156,7 +156,7 @@ size_t StringLTypeDefn::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down Expand Up @@ -234,7 +234,7 @@ size_t PlainCollectionHeader::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down Expand Up @@ -368,7 +368,7 @@ size_t PlainSequenceSElemDefn::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down Expand Up @@ -513,7 +513,7 @@ size_t PlainSequenceLElemDefn::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down Expand Up @@ -660,7 +660,7 @@ size_t PlainArraySElemDefn::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down Expand Up @@ -818,7 +818,7 @@ size_t PlainArrayLElemDefn::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down Expand Up @@ -1044,7 +1044,7 @@ size_t PlainMapSTypeDefn::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down Expand Up @@ -1284,7 +1284,7 @@ size_t PlainMapLTypeDefn::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down Expand Up @@ -1398,7 +1398,7 @@ size_t StronglyConnectedComponentId::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down Expand Up @@ -1459,7 +1459,7 @@ size_t ExtendedTypeDefn::getCdrSerializedSize(
size_t current_alignment)
{
size_t initial_alignment = current_alignment;
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv2);
eprosima::fastcdr::CdrSizeCalculator calculator(eprosima::fastcdr::CdrVersion::XCDRv1);
return eprosima::fastcdr::calculate_serialized_size(calculator, data, current_alignment) - initial_alignment;
}

Expand Down
Loading

0 comments on commit e86a936

Please sign in to comment.