from Messages.Messages import IMessage class ModelUrlMsg(IMessage): id = 0x90 length = 4 network_id = None thing_id = None url = None def __init__(self, data, thing = None): if isinstance(data, bytes): self.network_id = data[1] self.thing_id = data[2] # model url length is not needed here self.url = data[ModelUrlMsg.length:].decode("utf-8") else: self.network_id = data if thing is not None: self.thing_id = thing.id self.url = thing.model_url def Serialize(self, buffer_ref): if self.network_id is None or self.thing_id is None or self.url is None: return 0 buffer: bytearray = buffer_ref[0] encoded_url = self.url.encode('utf-8') url_length = len(encoded_url) full_length = ModelUrlMsg.length + url_length if url_length == 0 or full_length > len(buffer): return 0 buffer[0:ModelUrlMsg.length] = [ ModelUrlMsg.id, self.network_id, self.thing_id, url_length ] # Append the url string buffer[ModelUrlMsg.length:full_length] = encoded_url return full_length