UNPKG

serialport-v5

Version:

fork with electron support of Node.js package to access serial ports. Linux, OSX and Windows. Welcome your robotic JavaScript overlords. Better yet, program them!

92 lines (78 loc) 1.61 kB
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() { }