def finish_job(self): """ Close socket, delete client item. :return: """ self.job_finished_flag_lock.acquire() log.info("The ordered packages has been full-filled, job is done.") for client in self.client_list: client.socket.close() log.info(f"Close connection of {client.uuid}") self.client_list.clear() self.job_finished_flag_lock.release() s = socket.socket() server_host = socket.gethostname() server_port = 23457 s.connect((server_host, server_port)) """ Add all seq data, combine to one package, send to server """ temp_list = [] for seq_data in self.ordered_seq_data: temp_list.append(seq_data.data) # result += seq_data.data # temp_list = [result] package = Package(payload=int_list_to_bytes(temp_list), data_type=PackageDataType.INT) package.generate_default_header() package.get_header().set_message("Ordered min value group") send_package(package, s)
def pack_data_buffer(self, buffer: Queue, pack_length) -> Package: payload: List[int] = [] seq: int = -1 pack_length = min(pack_length, buffer.qsize()) for i in range(pack_length): seq_data: SeqData = buffer.get() payload.append(seq_data.data) if i == 0: seq = seq_data.seq package = Package(payload=int_list_to_bytes(payload), data_type=PackageDataType.INT) package.generate_default_header() package.get_header().set_package_seq(seq) return package
def unpack_data_buffer(self, package: Package): payload: List[int] = package.get_payload(parse=True) header = package.get_header() seq: int = header.get_package_seq(parse=True) # put the data into stack inverted order for i in range(len(payload) - 1, -1, -1): seq_data = SeqData(seq=seq + i, data=payload[i]) self.resent_buffer.put(seq_data) log.debug(f"resent buffer: {self.resent_buffer.queue}")