Sha256: a23c413a059f4422ce03f22cd2a373b2fa6930ac47cc103a0e7e26a6ee6d0602

Contents?: true

Size: 1.57 KB

Versions: 91

Compression:

Stored size: 1.57 KB

Contents

var streamify = require('./streamify.js')
  , defer     = require('./defer.js')
  ;

// API
module.exports = ReadableAsyncKit;

/**
 * Base constructor for all streams
 * used to hold properties/methods
 */
function ReadableAsyncKit()
{
  ReadableAsyncKit.super_.apply(this, arguments);

  // list of active jobs
  this.jobs = {};

  // add stream methods
  this.destroy = destroy;
  this._start  = _start;
  this._read   = _read;
}

/**
 * Destroys readable stream,
 * by aborting outstanding jobs
 *
 * @returns {void}
 */
function destroy()
{
  if (this.destroyed)
  {
    return;
  }

  this.destroyed = true;

  if (typeof this.terminator == 'function')
  {
    this.terminator();
  }
}

/**
 * Starts provided jobs in async manner
 *
 * @private
 */
function _start()
{
  // first argument – runner function
  var runner = arguments[0]
    // take away first argument
    , args   = Array.prototype.slice.call(arguments, 1)
      // second argument - input data
    , input  = args[0]
      // last argument - result callback
    , endCb  = streamify.callback.call(this, args[args.length - 1])
    ;

  args[args.length - 1] = endCb;
  // third argument - iterator
  args[1] = streamify.iterator.call(this, args[1]);

  // allow time for proper setup
  defer(function()
  {
    if (!this.destroyed)
    {
      this.terminator = runner.apply(null, args);
    }
    else
    {
      endCb(null, Array.isArray(input) ? [] : {});
    }
  }.bind(this));
}


/**
 * Implement _read to comply with Readable streams
 * Doesn't really make sense for flowing object mode
 *
 * @private
 */
function _read()
{

}

Version data entries

91 entries across 89 versions & 22 rubygems

Version Path
clapton-0.0.26 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.25 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.24 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.23 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.22 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.21 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.20 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.19 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.18 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.17 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.16 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.15 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.14 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.13 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.12 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.11 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.10 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.9 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.8 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js
clapton-0.0.7 lib/clapton/javascripts/node_modules/asynckit/lib/readable_asynckit.js