1.0.0 • Published 10 years ago

catstreams v1.0.0

Weekly downloads
15
License
MIT
Repository
github
Last release
10 years ago

catstreams: Concatenate data from multiple streams fetched concurrently

catstreams provides a Readable stream interface that concatenates the results of N other streams.

Example

$ cat examples/catstreams.js
/*
 * examples/catstreams.js: basic CatStreams example
 */

var mod_restify = require('restify');
var mod_bunyan = require('bunyan');
var HttpStream = require('httpstream');
var CatStreams = require('../lib/catstreams');

var log = new mod_bunyan({
    'name': 'example',
    'level': 'warn',
    'serializers': mod_restify.bunyan.serializers
});

var client = mod_restify.createClient({
    'log': log,
    'url': 'https://us-east.manta.joyent.com'
});

var stream = new CatStreams({
    'log': log,
    'perRequestBuffer': 10 * 1024 * 1024,
    'maxConcurrency': 2
});

stream.cat(function (options) {
	return (new HttpStream({
	    'client': client,
	    'path': '/manta/public/sdks/node-manta.tar.gz',
	    'log': log,
	    'highWaterMark': options['highWaterMark']
	}));
});

stream.cat(function (options) {
	return (new HttpStream({
	    'client': client,
	    'path': '/manta/public/sdks/node-manta.tar.gz',
	    'log': log,
	    'highWaterMark': options['highWaterMark']
	}));
});

stream.cat(null);

var sum = 0;
console.log('fetching ... ');
stream.on('data', function (c) { sum += c.length; });
stream.on('end', function () {
	console.log('fetched %d bytes', sum);
	client.close();
});

$ mls -l /manta/public/sdks/node-manta.tar.gz
-rwxr-xr-x 1 manta       2697998 Jul 22 15:52 node-manta.tar.gz

$ node examples/catstream.js
fetching ...
fetched 5395996 bytes

Contributions

Pull requests should be "make prepush" clean.

1.0.0

10 years ago

0.5.0

10 years ago

0.0.4

12 years ago

0.0.3

12 years ago

0.0.2

12 years ago

0.0.1

12 years ago