예제 #1
0
    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)
예제 #2
0
    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
예제 #3
0
 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}")