| var streamify = require('./streamify.js') |
| , defer = require('./defer.js') |
| ; |
|
|
| |
| module.exports = ReadableAsyncKit; |
|
|
| |
| |
| |
| |
| function ReadableAsyncKit() |
| { |
| ReadableAsyncKit.super_.apply(this, arguments); |
|
|
| |
| this.jobs = {}; |
|
|
| |
| this.destroy = destroy; |
| this._start = _start; |
| this._read = _read; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| function destroy() |
| { |
| if (this.destroyed) |
| { |
| return; |
| } |
|
|
| this.destroyed = true; |
|
|
| if (typeof this.terminator == 'function') |
| { |
| this.terminator(); |
| } |
| } |
|
|
| |
| |
| |
| |
| |
| function _start() |
| { |
| |
| var runner = arguments[0] |
| |
| , args = Array.prototype.slice.call(arguments, 1) |
| |
| , input = args[0] |
| |
| , endCb = streamify.callback.call(this, args[args.length - 1]) |
| ; |
|
|
| args[args.length - 1] = endCb; |
| |
| args[1] = streamify.iterator.call(this, args[1]); |
|
|
| |
| defer(function() |
| { |
| if (!this.destroyed) |
| { |
| this.terminator = runner.apply(null, args); |
| } |
| else |
| { |
| endCb(null, Array.isArray(input) ? [] : {}); |
| } |
| }.bind(this)); |
| } |
|
|
|
|
| |
| |
| |
| |
| |
| |
| function _read() |
| { |
|
|
| } |
|
|