def finalize (self, _commit) : _outcome_1 = self.operation.finalize (_commit) _outcome_2 = self.queue.finalize () _outcome_3 = self.session.finalize (_commit) _outcome = outcomes.succeed_if_all (_outcome_1, _outcome_2, _outcome_3) if _outcome.succeeded : _outcome = self.succeeded (None) else : _outcome = self.failed ('failed while closing resources', errno.EIO) del self.session del self.queue del self.operation return _outcome
def finalize(self): _outcome = None if _outcome is None: if not self.initialized: _outcome = outcomes.fail("queue not initialized") if _outcome is None: if len(self.operations) > 0: _outcome = outcomes.fail("queue has pending operations") if _outcome is None: try: self.queue.close() _outcome_1 = outcomes.succeed() except: _outcome_1 = outcomes.fail_with_traceback("queue failed to close BDB queue database") try: self.data.close() _outcome_2 = outcomes.succeed() except: _outcome_2 = outcomes.fail_with_traceback("queue failed to close BDB data database") try: self.recycle.close() _outcome_3 = outcomes.succeed() except: _outcome_3 = outcomes.fail_with_traceback("queue failed to close BDB data database") if self.session is not None: self.session.queues.remove(self) else: self.store.queues.remove(self) del self.store del self.session del self.name self.initialized = None del self.transaction del self.queue del self.data del self.recycle del self.operations _outcome = outcomes.succeed_if_all(_outcome_1, _outcome_2, _outcome_3) return _outcome
def enqueue (_arguments) : _outcome = None if _outcome is None : if len (_arguments) == 3 : _environment_path = _arguments[0] _queue_name = _arguments[1] _data_path = _arguments[2] else : _outcome = outcomes.fail ('enqueue invalid arguments') _stream = None _data = None if _outcome is None : try : _stream = file (_data_path, 'rb') _data = _stream.read (-1) _stream.close () except : _outcome = outcomes.fail_with_traceback ('failed while opening or reading input file') if _stream is not None : try : _stream.close () except : pass _store = None if _outcome is None : _store = store.Store (_environment_path) _outcome = _store.initialize () if _outcome.succeeded : _outcome = None _session = None if _outcome is None : _outcome = _store.session () if _outcome.succeeded : _session = _outcome.session _outcome = None _queue = None if _outcome is None : _outcome = _session.queue (_queue_name) if _outcome.succeeded : _queue = _outcome.queue _outcome = None _operation = None if _outcome is None : _outcome = _queue.enqueue () if _outcome.succeeded : _operation = _outcome.operation _outcome = None if _outcome is None : _outcome = _operation.update (_data) if _outcome.succeeded : _outcome = None if _outcome is None : _outcome = _operation.finalize (True) _operation = None if _outcome.succeeded : _outcome = None if _outcome is None : _outcome = _queue.finalize () _queue = None if _outcome.succeeded : _outcome = None if _outcome is None : _outcome = _session.finalize (True) _session = None if _outcome.succeeded : _outcome = None if _outcome is None : _outcome = outcomes.succeed () _outcome_0 = _outcome if _operation is not None : _outcome_1 = _operation.finalize (False) _operation = None else : _outcome_1 = None if _queue is not None : _outcome_2 = _queue.finalize () _queue = None else : _outcome_2 = None if _session is not None : _outcome_3 = _session.finalize (False) _session = None else : _outcome_3 = None if _store is not None : _outcome_4 = _store.finalize () _store = None else : _outcome_4 = None _outcome = outcomes.succeed_if_all (_outcome_0, _outcome_1, _outcome_2, _outcome_3, _outcome_4) return _outcome
def dequeue (_arguments) : _outcome = None if _outcome is None : if len (_arguments) == 3 : _environment_path = _arguments[0] _queue_name = _arguments[1] _data_path = _arguments[2] else : _outcome = outcomes.fail ('dequeue invalid arguments') _store = None if _outcome is None : _store = store.Store (_environment_path) _outcome = _store.initialize () if _outcome.succeeded : _outcome = None _session = None if _outcome is None : _outcome = _store.session () if _outcome.succeeded : _session = _outcome.session _outcome = None _queue = None if _outcome is None : _outcome = _session.queue (_queue_name) if _outcome.succeeded : _queue = _outcome.queue _outcome = None _operation = None if _outcome is None : _outcome = _queue.dequeue () if _outcome.succeeded : _operation = _outcome.operation _outcome = None _data = None if _outcome is None : _outcome = _operation.poll () if _outcome.succeeded : if _outcome.prepared : _outcome = None else : _outcome = outcomes.fail ('dequeue unavailable data') if _outcome is None : _outcome = _operation.select () if _outcome.succeeded : _data = _outcome.data _outcome = None _stream = None if _outcome is None : try : _stream = file (_data_path, 'wb') _stream.write (_data) _stream.close () except : _outcome = outcomes.fail_with_traceback ('failed while opening or writing output file') if _stream is not None : try : _stream.close () except : pass if _outcome is None : _outcome = _operation.finalize (True) _operation = None if _outcome.succeeded : _outcome = None if _outcome is None : _outcome = _queue.finalize () _queue = None if _outcome.succeeded : _outcome = None if _outcome is None : _outcome = _session.finalize (True) _session = None if _outcome.succeeded : _outcome = None if _outcome is None : _outcome = outcomes.succeed () _outcome_0 = _outcome if _operation is not None : _outcome_1 = _operation.finalize (False) _operation = None else : _outcome_1 = None if _queue is not None : _outcome_2 = _queue.finalize () _queue = None else : _outcome_2 = None if _session is not None : _outcome_3 = _session.finalize (False) _session = None else : _outcome_3 = None if _store is not None : _outcome_4 = _store.finalize () _store = None else : _outcome_4 = None _outcome = outcomes.succeed_if_all (_outcome_0, _outcome_1, _outcome_2, _outcome_3, _outcome_4) return _outcome