def get_bytes(self):
"""Serialize the message
:returns: Serialized message
:rtype: :class:`bytearray`
"""
output = bytearray(len(self))
self._write_header(output)
offset = self.HEADER_LEN
fmt = '!h%dsih%dsi' % (len(self.group_id), len(self.member_id))
struct.pack_into(fmt, output, offset, len(self.group_id), self.group_id,
self.generation_id, len(self.member_id), self.member_id,
len(self.group_assignment))
offset += struct.calcsize(fmt)
for member_assignment in self.group_assignment:
assignment_bytes = bytes(member_assignment.get_bytes())
fmt = '!h%dsi%ds' % (len(member_assignment.member_id), len(assignment_bytes))
struct.pack_into(fmt, output, offset, len(member_assignment.member_id),
member_assignment.member_id, len(assignment_bytes),
assignment_bytes)
offset += struct.calcsize(fmt)
return output
评论列表
文章目录