from Messages import IMessage class NameMsg(IMessage): id = 0x91 length = 4 def __init__(self, network_id, thing=None): if isinstance(network_id, bytes): self.network_id = network_id[1] self.thing_id = network_id[2] name_length = network_id[3] self.name = network_id[NameMsg.length:].decode("utf-8") else: self.network_id = network_id self.thing = thing def Serialize(self, buffer_ref): if self.network_id is None or self.thing is None or self.thing.name is None: return 0 buffer: bytearray = buffer_ref[0] encoded_name = self.thing.name.encode('utf-8') name_length = len(encoded_name) full_length = NameMsg.length + name_length if name_length == 0 or full_length > len(buffer): return 0 buffer[0:NameMsg.length] = [ NameMsg.id, self.network_id, self.thing.id, name_length ] # Append the name string buffer[NameMsg.length:full_length] = encoded_name return full_length