Exemplo n.º 1
0
 def cancel(self, reason=None):
     if reason:
         msg = "download stream cancelled: %s" % reason
     else:
         msg = "download stream cancelled"
     if self.data_downloading_deferred and not self.data_downloading_deferred.called:
         self.data_downloading_deferred.errback(DownloadCanceledError(msg))
Exemplo n.º 2
0
 def close(self, reason=None):
     # if we've already called finished_cb because we either finished writing
     # or closed already, do nothing
     if self.finished_cb_d is not None:
         return
     if reason is None:
         reason = Failure(DownloadCanceledError())
     self.finished_cb_d = self.finished_cb(self, reason)
Exemplo n.º 3
0
 def _save_verified_blob(self, writer):
     if self.saved_verified_blob is False:
         writer.write_handle.seek(0)
         out_path = os.path.join(self.blob_dir, self.blob_hash)
         producer = FileBodyProducer(writer.write_handle)
         yield producer.startProducing(open(out_path, 'wb'))
         self.saved_verified_blob = True
         defer.returnValue(True)
     else:
         raise DownloadCanceledError()
Exemplo n.º 4
0
 def stop(self):
     for d in reversed(self.deferreds):
         d.cancel()
     while self.writers:
         writer = self.writers.pop()
         writer.close(DownloadCanceledError())
     self.blob_hashes = []
     if self.looping_call.running:
         self.looping_call.stop()
     if self.lc_deferred and not self.lc_deferred.called:
         self.lc_deferred.cancel()
     if not self.finished_deferred.called:
         self.finished_deferred.cancel()