diff options
Diffstat (limited to 'lib/internal/stream_base_commons.js')
-rw-r--r-- | lib/internal/stream_base_commons.js | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/internal/stream_base_commons.js b/lib/internal/stream_base_commons.js index 8da15983f1..870b5b3e3b 100644 --- a/lib/internal/stream_base_commons.js +++ b/lib/internal/stream_base_commons.js @@ -1,7 +1,13 @@ 'use strict'; const { Buffer } = require('buffer'); -const { WriteWrap } = internalBinding('stream_wrap'); +const { FastBuffer } = require('internal/buffer'); +const { + WriteWrap, + kReadBytesOrError, + kArrayBufferOffset, + streamBaseState +} = internalBinding('stream_wrap'); const { UV_EOF } = internalBinding('uv'); const { errnoException } = require('internal/errors'); const { owner_symbol } = require('internal/async_hooks').symbols; @@ -84,13 +90,17 @@ function afterWriteDispatched(self, req, err, cb) { } } -function onStreamRead(nread, buf) { +function onStreamRead(arrayBuffer) { + const nread = streamBaseState[kReadBytesOrError]; + const handle = this; const stream = this[owner_symbol]; stream[kUpdateTimer](); if (nread > 0 && !stream.destroyed) { + const offset = streamBaseState[kArrayBufferOffset]; + const buf = new FastBuffer(arrayBuffer, offset, nread); if (!stream.push(buf)) { handle.reading = false; if (!stream.destroyed) { |