from .Messages import IMessage class NameMsg(IMessage): id = 0x91 length = 4 thing_id = None name = None def __init__(self, data, thing = None): if isinstance(data, bytes): self.network_id = data[1] self.thing_id = data[2] # name_length is not needed here self.name = data[NameMsg.length:].decode("utf-8") else: self.network_id = data if thing is not None: self.thing_id = thing.id self.name = thing.name def Serialize(self, buffer_ref): if self.network_id is None or self.thing_id is None or self.name is None: return 0 buffer: bytearray = buffer_ref[0] encoded_name = self.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