def open_for_reading(self): """ open blob for reading returns a file like object that can be read() from, and closed() when finished """ if self._verified is True: f = open(self.file_path, 'rb') reader = HashBlobReader(f, self.reader_finished) self.readers += 1 return reader return None
def read(self, write_func): def close_self(*args): self.close_read_handle(file_handle) return args[0] file_sender = FileSender() reader = HashBlobReader(write_func) file_handle = self.open_for_reading() if file_handle is not None: d = file_sender.beginFileTransfer(file_handle, reader) d.addCallback(close_self) else: d = defer.fail(IOError("Could not read the blob")) return d