source: imaps-frontend/node_modules/asynckit/lib/readable_asynckit.js@ d565449

main
Last change on this file since d565449 was d565449, checked in by stefan toskovski <stefantoska84@…>, 4 weeks ago

Update repo after prototype presentation

  • Property mode set to 100644
File size: 1.6 KB
Line 
1var streamify = require('./streamify.js')
2 , defer = require('./defer.js')
3 ;
4
5// API
6module.exports = ReadableAsyncKit;
7
8/**
9 * Base constructor for all streams
10 * used to hold properties/methods
11 */
12function ReadableAsyncKit()
13{
14 ReadableAsyncKit.super_.apply(this, arguments);
15
16 // list of active jobs
17 this.jobs = {};
18
19 // add stream methods
20 this.destroy = destroy;
21 this._start = _start;
22 this._read = _read;
23}
24
25/**
26 * Destroys readable stream,
27 * by aborting outstanding jobs
28 *
29 * @returns {void}
30 */
31function destroy()
32{
33 if (this.destroyed)
34 {
35 return;
36 }
37
38 this.destroyed = true;
39
40 if (typeof this.terminator == 'function')
41 {
42 this.terminator();
43 }
44}
45
46/**
47 * Starts provided jobs in async manner
48 *
49 * @private
50 */
51function _start()
52{
53 // first argument – runner function
54 var runner = arguments[0]
55 // take away first argument
56 , args = Array.prototype.slice.call(arguments, 1)
57 // second argument - input data
58 , input = args[0]
59 // last argument - result callback
60 , endCb = streamify.callback.call(this, args[args.length - 1])
61 ;
62
63 args[args.length - 1] = endCb;
64 // third argument - iterator
65 args[1] = streamify.iterator.call(this, args[1]);
66
67 // allow time for proper setup
68 defer(function()
69 {
70 if (!this.destroyed)
71 {
72 this.terminator = runner.apply(null, args);
73 }
74 else
75 {
76 endCb(null, Array.isArray(input) ? [] : {});
77 }
78 }.bind(this));
79}
80
81
82/**
83 * Implement _read to comply with Readable streams
84 * Doesn't really make sense for flowing object mode
85 *
86 * @private
87 */
88function _read()
89{
90
91}
Note: See TracBrowser for help on using the repository browser.