UNPKG

allex_jobondestroyablelib

Version:

AllexJS lib that wraps the allex_jobondestroyablelowlevellib

87 lines (78 loc) 3.09 kB
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ ALLEX.execSuite.libRegistry.register('allex_jobondestroyablelib',require('./index')(ALLEX)); },{"./index":2}],2:[function(require,module,exports){ function createLib (execlib) { 'use strict'; var lib = execlib.lib; return require('allex_jobondestroyablelowlevellib')(lib.inherit, lib.qlib.JobBase, lib.Error, lib.q.reject); } module.exports = createLib; },{"allex_jobondestroyablelowlevellib":3}],3:[function(require,module,exports){ function createJobOnDestroyable (inherit, JobBase, Error, qreject) { 'use strict'; function JobOnDestroyableBase (destroyable, defer) { JobBase.call(this, defer); this.destroyable = destroyable; } inherit(JobOnDestroyableBase, JobBase); JobOnDestroyableBase.prototype.destroy = function () { this.destroyable = null; JobBase.prototype.destroy.call(this); }; JobOnDestroyableBase.prototype.okToGo = function () { var ret = {ok: true, val: null}; if (!this.defer) { ret.ok = false; ret.val = qreject(new Error('ALREADY_DESTROYED')); return ret; } ret.val = this.defer.promise; if (!this.okToProceed()) { ret.ok = false; } return ret; }; JobOnDestroyableBase.prototype.peekToProceed = function () { var ret = {ok: true, val: null}; if (!(this.destroyable && this.defer)) { ret.ok = false; ret.val = new Error('ALREADY_DESTROYED'); return ret; } if (!this._destroyableOk()) { ret.ok = false; ret.val = new Error('DESTROYABLE_REFERENCE_DESTROYED'); return ret; } ret.val = this.defer.promise; return ret; }; JobOnDestroyableBase.prototype.okToProceed = function () { var ptp = this.peekToProceed(); if (!ptp.ok) { this.reject(ptp.val); } return ptp.ok; }; function JobOnDestroyable (destroyable, defer) { JobOnDestroyableBase.call(this, destroyable, defer); } inherit(JobOnDestroyable, JobOnDestroyableBase); JobOnDestroyable.prototype._destroyableOk = function () { return this.destroyable && this.destroyable.destroyed; }; function JobOnComplexDestroyable (destroyable, defer) { JobOnDestroyableBase.call(this, destroyable, defer); } inherit(JobOnComplexDestroyable, JobOnDestroyableBase); JobOnComplexDestroyable.prototype._destroyableOk = function () { return this.destroyable && this.destroyable.aboutToDie; }; return { JobOnDestroyableBase: JobOnDestroyableBase, JobOnDestroyable: JobOnDestroyable, JobOnComplexDestroyable: JobOnComplexDestroyable }; } module.exports = createJobOnDestroyable; },{}]},{},[1]);