Beispiel #1
0
 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())
Beispiel #2
0
 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())