(stream, state, isBuf, chunk, encoding, cb)
| 25588 | // in the queue, and wait our turn. Otherwise, call _write |
| 25589 | // If we return false, then we need a drain event, so set that flag. |
| 25590 | function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { |
| 25591 | if (!isBuf) { |
| 25592 | chunk = decodeChunk(state, chunk, encoding); |
| 25593 | if (Buffer.isBuffer(chunk)) encoding = 'buffer'; |
| 25594 | } |
| 25595 | var len = state.objectMode ? 1 : chunk.length; |
| 25596 | |
| 25597 | state.length += len; |
| 25598 | |
| 25599 | var ret = state.length < state.highWaterMark; |
| 25600 | // we must ensure that previous needDrain will not be reset to false. |
| 25601 | if (!ret) state.needDrain = true; |
| 25602 | |
| 25603 | if (state.writing || state.corked) { |
| 25604 | var last = state.lastBufferedRequest; |
| 25605 | state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); |
| 25606 | if (last) { |
| 25607 | last.next = state.lastBufferedRequest; |
| 25608 | } else { |
| 25609 | state.bufferedRequest = state.lastBufferedRequest; |
| 25610 | } |
| 25611 | state.bufferedRequestCount += 1; |
| 25612 | } else { |
| 25613 | doWrite(stream, state, false, len, chunk, encoding, cb); |
| 25614 | } |
| 25615 | |
| 25616 | return ret; |
| 25617 | } |
| 25618 | |
| 25619 | function doWrite(stream, state, writev, len, chunk, encoding, cb) { |
| 25620 | state.writelen = len; |
no test coverage detected