Browse Source

stream: Use class for write buffer entries

v0.9.12-release
isaacs 12 years ago
parent
commit
312289b791
  1. 14
      lib/_stream_writable.js
  2. 2
      test/simple/test-stream2-transform.js

14
lib/_stream_writable.js

@ -32,6 +32,12 @@ var Stream = require('stream');
util.inherits(Writable, Stream); util.inherits(Writable, Stream);
function WriteReq(chunk, encoding, cb) {
this.chunk = chunk;
this.encoding = encoding;
this.callback = cb;
}
function WritableState(options, stream) { function WritableState(options, stream) {
options = options || {}; options = options || {};
@ -190,7 +196,7 @@ function writeOrBuffer(stream, state, chunk, encoding, cb) {
state.needDrain = !ret; state.needDrain = !ret;
if (state.writing) if (state.writing)
state.buffer.push([chunk, encoding, cb]); state.buffer.push(new WriteReq(chunk, encoding, cb));
else else
doWrite(stream, state, len, chunk, encoding, cb); doWrite(stream, state, len, chunk, encoding, cb);
@ -268,9 +274,9 @@ function clearBuffer(stream, state) {
for (var c = 0; c < state.buffer.length; c++) { for (var c = 0; c < state.buffer.length; c++) {
var entry = state.buffer[c]; var entry = state.buffer[c];
var chunk = entry[0]; var chunk = entry.chunk;
var encoding = entry[1]; var encoding = entry.encoding;
var cb = entry[2]; var cb = entry.callback;
var len = state.objectMode ? 1 : chunk.length; var len = state.objectMode ? 1 : chunk.length;
doWrite(stream, state, len, chunk, encoding, cb); doWrite(stream, state, len, chunk, encoding, cb);

2
test/simple/test-stream2-transform.js

@ -82,7 +82,7 @@ test('writable side consumption', function(t) {
t.equal(transformed, 10); t.equal(transformed, 10);
t.equal(tx._transformState.writechunk.length, 5); t.equal(tx._transformState.writechunk.length, 5);
t.same(tx._writableState.buffer.map(function(c) { t.same(tx._writableState.buffer.map(function(c) {
return c[0].length; return c.chunk.length;
}), [6, 7, 8, 9, 10]); }), [6, 7, 8, 9, 10]);
t.end(); t.end();

Loading…
Cancel
Save