update stream clearing to be compatible with node 0.12

This commit is contained in:
Spencer Alger
2015-03-17 12:03:39 -07:00
parent c74e7550de
commit ed26798e5e
4 changed files with 37 additions and 33 deletions

View File

@ -397,25 +397,42 @@ _.createArray = function (input, transform) {
* @return {string} - the remaining test to be written to the stream
*/
_.getUnwrittenFromStream = function (stream) {
if (stream && stream._writableState && stream._writableState.buffer) {
// flush the write buffer to disk
var writeBuffer = stream._writableState.buffer;
var out = '';
if (writeBuffer.length) {
_.each(writeBuffer, function (writeReq) {
if (writeReq.chunk) {
// 0.9.12+ uses WriteReq objects with a chunk prop
out += '' + writeReq.chunk;
} else if (_.isArray(writeReq) && (typeof writeReq[0] === 'string' || Buffer.isBuffer(writeReq[0]))) {
// 0.9.4 - 0.9.9 buffers are arrays of arrays like [[chunk, cb], [chunk, undef], ...].
out += '' + writeReq[0];
} else {
return false;
}
});
}
return out;
var writeBuffer = _.getStreamWriteBuffer(stream);
if (!writeBuffer || !writeBuffer.length) {
return '';
}
// flush the write buffer
var out = '';
_.each(writeBuffer, function (writeReq) {
if (writeReq.chunk) {
// 0.9.12+ uses WriteReq objects with a chunk prop
out += '' + writeReq.chunk;
} else if (_.isArray(writeReq) && (typeof writeReq[0] === 'string' || Buffer.isBuffer(writeReq[0]))) {
// 0.9.4 - 0.9.9 buffers are arrays of arrays like [[chunk, cb], [chunk, undef], ...].
out += '' + writeReq[0];
} else {
return false;
}
});
return out;
};
_.getStreamWriteBuffer = function (stream) {
if (!stream || !stream._writableState) return;
var writeState = stream._writableState;
if (writeState.getBuffer) {
return writeState.getBuffer();
} else if (writeState.buffer) {
return writeState.buffer;
}
};
_.clearWriteStreamBuffer = function (stream) {
var buffer = _.emptyWriteStreamBuffer(stream);
return buffer && buffer.splice(0);
};
/**

View File

@ -247,7 +247,6 @@ describe('Connection Pool', function () {
var clock = sinon.useFakeTimers();
stub.autoRelease(clock);
debugger;
connection.setStatus('dead');
expect(_.size(clock.timers)).to.eql(1);
var id = _(clock.timers).keys().first();

View File

@ -15,15 +15,7 @@ describe('File Logger', function () {
afterEach(function () {
parentLog.close();
if (logger
&& logger.stream
&& logger.stream._writableState
&& logger.stream._writableState.buffer.length
) {
// empty the buffer manually
logger.stream._writableState.buffer.splice(0);
}
logger && _.clearWriteStreamBuffer(logger.stream);
});
function makeLogger(parent, levels) {

View File

@ -19,11 +19,7 @@ describe('Stream Logger', function () {
afterEach(function () {
parentLog.close();
if (stream._writableState && stream._writableState.buffer.length) {
// empty the buffer manually
stream._writableState.buffer.splice(0);
}
_.clearWriteStreamBuffer(stream);
});
function makeLogger(parent, levels) {