Description
Feed multiple node.js streams sequentially into one (Writable or Duplex) stream.
Note: The single Writable/Duplex stream will emit multiple 'finish' events, so if you have a listener for that event, you can ignore it until you end the Conveyor instance.
Requirements
- node.js -- v0.10.0 or newer
Install
npm install conveyor
Examples
- Pass HTTP requests to an echo stream:
var TransformStream = Transform http = ; var Conveyor = ; var stream = ;stream { this; ;}; var c = stream TOTAL = 10 count = 0; http; // output:// Hello from request #1// Hello from request #2// Hello from request #3// Hello from request #4// Hello from request #5// Hello from request #6// Hello from request #7// Hello from request #8// Hello from request #9// Hello from request #10
- Pass HTTP requests to an Writable stream:
var WritableStream = Writable http = ; var Conveyor = ; var stream = ;stream { console; ;}; var c = stream TOTAL = 10 count = 0; http; // output (assuming 1-chunk requests):// Hello from request #1// Hello from request #2// Hello from request #3// Hello from request #4// Hello from request #5// Hello from request #6// Hello from request #7// Hello from request #8// Hello from request #9// Hello from request #10
API
Conveyor is an EventEmitter
Conveyor events
- end() - Emitted after end() is called and all streams have been processed.
Conveyor methods
-
(constructor)(< Writable >dest, < object >config) - Creates and returns a new Dicer instance with the following valid
config
settings:-
max - integer - This is the max queue size (this does not include the stream currently being processed, if applicable). (Default: Infinity)
-
startPaused - boolean - Start in a paused state? (Default: false)
-
-
push(< Readable >stream[, < Writable >pipeStream][, < object >pipeStreamOpts][, < function >callback]) - boolean - Pushes (appends)
stream
to the queue. IfpipeStream
is set, data (fromdest
passed to the constructor) will be piped to this stream with optionalpipeStreamOpts
pipe settings.callback
is called oncestream
has ended anddest
is drained. The return value is false ifstream
could not be enqueued due to the queue being full. -
unshift(< Readable >stream[, < Writable >pipeStream][, < object >pipeStreamOpts][, < function >callback]) - boolean - Identical to push() except it unshifts (prepends)
stream
to the queue. -
pause() - (void) - Pauses processing of streams in the queue. If a stream is currently being processed, then the next one will not be started until resume() has been explicitly called.
-
resume() - (void) - Resumes processing of streams in the queue.