Skip to content

Commit dc959d1

Browse files
committed
XCDR2 set MU on keys only if explicitly marked MU
It turns out the problems with RTI's handling of the MU flag in mutable encoding are not limited to XCDR1 ... See also a474791. Signed-off-by: Erik Boasson <eb@ilities.com>
1 parent f7bdddf commit dc959d1

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

cyclonedds/idl/_machinery.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1118,7 +1118,10 @@ def serialize(self, buffer, value, serialize_kind=SerializeKind.DataSample, key_
11181118

11191119
buffer.align(4)
11201120
if self.use_version_2:
1121-
buffer.write('I', 4, mutablemember.header | ((1 if m_key_enabled != KeyEnabled.Never else 0) << 31))
1121+
# It appears RTI also can't handle "must understand" on key fields in
1122+
# XCDR2, even though XTypes 1.3 requires it. This should add:
1123+
# | ((1 if m_key_enabled != KeyEnabled.Never else 0) << 31)
1124+
buffer.write('I', 4, mutablemember.header)
11221125
else:
11231126
# TODO: use compact variant when member id and the max serialized size of the type are small enough
11241127
buffer.write('H', 2, XCDR1.PL_SHORT_PID_EXTENDED | XCDR1.PL_SHORT_FLAG_MU)

0 commit comments

Comments
 (0)