def get_limits(self, msg: Message) -> Tuple[datetime, datetime]: _nonce = msg.get_string() _pk = msg.get_string() _serial = msg.get_int64() _key_type = msg.get_int() _key_id = msg.get_string() _principals = msg.get_list() return self._as_datetime_tuple(msg.get_int64(), msg.get_int64())
def _threaded_reader(self, handle, writer, size): futures = [] with self._lock: lo["expected_responses"] = math.ceil(size / MAX_PAYLOAD_SIZE) with ThreadPoolExecutor() as executor: n = 0 while n < size: chunk = min(MAX_PAYLOAD_SIZE, size - n) futures.append(executor.submit(self.read, handle, chunk, n, thread=True)) n += chunk requests = [f.result() for f in futures] for r in requests: resp_type, data = self._sftp._read_packet() if resp_type != CMD_DATA: raise SFTPError("Expected data") msg = Message(data) resp_num = msg.get_int() if resp_num in _request_stack: writer.seek(_request_stack[resp_num][0]) log.debug(f'write local at byte {_request_stack[resp_num][0]}') writer.write(msg.get_string())