in dubbo/codec/encoder.py [0:0]
def _encode_object(self, value):
"""
对一个对象进行编码
:param value:
:return:
"""
result = []
path = value.get_path()
field_names = value.keys()
if path not in self.__classes:
result.append(ord('C'))
result.extend(self._encode_single_value(path))
result.extend(self._encode_single_value(len(field_names)))
for field_name in field_names:
result.extend(self._encode_single_value(field_name))
self.__classes.append(path)
class_id = self.__classes.index(path)
if class_id <= 0xf:
class_id += 0x60
class_id &= 0xff
result.append(class_id)
else:
result.append(ord('O'))
result.extend(self._encode_single_value(class_id))
for field_name in field_names:
result.extend(self._encode_single_value(value[field_name]))
return result