pump is a small node module that pipes streams together and destroys all of them if one of them closes.
Contents
Problems resolved by pump
When using standard source.pipe(dest) source will not be destroyed if dest emits close or an error. You are also unable to provide a callback to tell when then pipe has finished. pump does these two things for you.
Install pump
Using npm:
npm install pump
External links
pump usage
Pass the streams you want to pipe together to pump and add an optional callback.
var pump = require('pump')
var fs = require('fs')
var source = fs.createReadStream('/dev/random')
var dest = fs.createWriteStream('/dev/null')
pump(source, dest, function(err) {
console.log('pipe finished', err)
})
setTimeout(function() {
dest.destroy() // when dest is closed pump will destroy source
}, 1000)
You can use pump to pipe more than two streams together as well.
var transform = someTransformStream()
pump(source, transform, anotherTransform, dest, function(err) {
console.log('pipe finished', err)
})
If source, transform, anotherTransform, or dest closes, all of them will be destroyed.
Similarly to stream.pipe(), pump() returns the last stream passed in, so you can do:
return pump(s1, s2) // returns s2
Notes:
- pump attaches error handlers to the streams to do internal error handling, so if s2 emits an error in the above scenario, it will not trigger a proccess.on('uncaughtException') if you do not listen for it.
- If you want to return a stream that combines both s1 and s2 to a single stream, use pumpify instead.
pump license
MIT
Comments
0 comments
Please sign in to leave a comment.