Remove resume and pause events
Too complex; unnecessary.
This commit is contained in:
parent
4c5751ba97
commit
239b3d62de
@ -93,9 +93,6 @@ This keeps `process.stdout` open so that "Goodbye" can be written at the end.
|
|||||||
process.stdout.write("Goodbye\n");
|
process.stdout.write("Goodbye\n");
|
||||||
});
|
});
|
||||||
|
|
||||||
NOTE: If the source stream does not support `pause()` and `resume()`, this function
|
|
||||||
adds simple definitions which simply emit `'pause'` and `'resume'` events on
|
|
||||||
the source stream.
|
|
||||||
|
|
||||||
## Writable Stream
|
## Writable Stream
|
||||||
|
|
||||||
|
@ -33,14 +33,18 @@ Stream.prototype.pipe = function(dest, options) {
|
|||||||
|
|
||||||
function ondata(chunk) {
|
function ondata(chunk) {
|
||||||
if (dest.writable) {
|
if (dest.writable) {
|
||||||
if (false === dest.write(chunk)) source.pause();
|
if (false === dest.write(chunk) && source.pause) {
|
||||||
|
source.pause();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
source.on('data', ondata);
|
source.on('data', ondata);
|
||||||
|
|
||||||
function ondrain() {
|
function ondrain() {
|
||||||
if (source.readable) source.resume();
|
if (source.readable && source.resume) {
|
||||||
|
source.resume();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dest.on('drain', ondrain);
|
dest.on('drain', ondrain);
|
||||||
@ -103,32 +107,6 @@ Stream.prototype.pipe = function(dest, options) {
|
|||||||
source.on('error', onerror);
|
source.on('error', onerror);
|
||||||
dest.on('error', onerror);
|
dest.on('error', onerror);
|
||||||
|
|
||||||
// guarantee that source streams can be paused and resumed, even
|
|
||||||
// if the only effect is to proxy the event back up the pipe chain.
|
|
||||||
if (!source.pause) {
|
|
||||||
source.pause = function() {
|
|
||||||
source.emit('pause');
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!source.resume) {
|
|
||||||
source.resume = function() {
|
|
||||||
source.emit('resume');
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function onpause() {
|
|
||||||
source.pause();
|
|
||||||
}
|
|
||||||
|
|
||||||
dest.on('pause', onpause);
|
|
||||||
|
|
||||||
function onresume() {
|
|
||||||
if (source.readable) source.resume();
|
|
||||||
}
|
|
||||||
|
|
||||||
dest.on('resume', onresume);
|
|
||||||
|
|
||||||
// remove all the event listeners that were added.
|
// remove all the event listeners that were added.
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
source.removeListener('data', ondata);
|
source.removeListener('data', ondata);
|
||||||
@ -137,9 +115,6 @@ Stream.prototype.pipe = function(dest, options) {
|
|||||||
source.removeListener('end', onend);
|
source.removeListener('end', onend);
|
||||||
source.removeListener('close', onclose);
|
source.removeListener('close', onclose);
|
||||||
|
|
||||||
dest.removeListener('pause', onpause);
|
|
||||||
dest.removeListener('resume', onresume);
|
|
||||||
|
|
||||||
source.removeListener('error', onerror);
|
source.removeListener('error', onerror);
|
||||||
dest.removeListener('error', onerror);
|
dest.removeListener('error', onerror);
|
||||||
|
|
||||||
|
16
lib/util.js
16
lib/util.js
@ -466,30 +466,14 @@ exports.pump = function(readStream, writeStream, callback) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!readStream.pause) {
|
|
||||||
readStream.pause = function() {readStream.emit('pause');};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!readStream.resume) {
|
|
||||||
readStream.resume = function() {readStream.emit('resume');};
|
|
||||||
}
|
|
||||||
|
|
||||||
readStream.addListener('data', function(chunk) {
|
readStream.addListener('data', function(chunk) {
|
||||||
if (writeStream.write(chunk) === false) readStream.pause();
|
if (writeStream.write(chunk) === false) readStream.pause();
|
||||||
});
|
});
|
||||||
|
|
||||||
writeStream.addListener('pause', function() {
|
|
||||||
readStream.pause();
|
|
||||||
});
|
|
||||||
|
|
||||||
writeStream.addListener('drain', function() {
|
writeStream.addListener('drain', function() {
|
||||||
readStream.resume();
|
readStream.resume();
|
||||||
});
|
});
|
||||||
|
|
||||||
writeStream.addListener('resume', function() {
|
|
||||||
readStream.resume();
|
|
||||||
});
|
|
||||||
|
|
||||||
readStream.addListener('end', function() {
|
readStream.addListener('end', function() {
|
||||||
writeStream.end();
|
writeStream.end();
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user