abraxas
Version:
A streaming gearman client / worker / server (as you choose)
28 lines (24 loc) • 886 B
JavaScript
;
var Promise = require('bluebird');
var concat = require('concat-stream');
var util = require('util');
var DuplexCombination = require('duplex-combination');
var Task = module.exports = function Task(reader,writer,options) {
DuplexCombination.call(this,reader,writer,options);
}
util.inherits(Task, DuplexCombination);
Task.prototype._makePromise = function () {
var self = this;
this.promise = new Promise(function(resolve,reject) {
self.pipe(concat(function(body) { resolve(body) }));
self.once('error', function (err) { reject(err) });
});
}
for (var name in Promise.prototype) { (function(name) {
if (name.substr(0,1)=='_') return;
var func = Promise.prototype[name];
Task.prototype[name] = function () {
if (! this.promise) this._makePromise();
return func.apply(this.promise,arguments);
}
})(name) }