From 4e4aae84b96c2b19637fc865b70eed6b15ce7dc5 Mon Sep 17 00:00:00 2001 From: Michael Ferris Date: Tue, 10 Dec 2019 12:58:02 -0500 Subject: [PATCH 1/2] fix: support onStreamRead for node 11.1 and above --- lib/handle.js | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/handle.js b/lib/handle.js index da70b3f..399742b 100644 --- a/lib/handle.js +++ b/lib/handle.js @@ -7,8 +7,19 @@ var Buffer = require('buffer').Buffer var Queue = require('./queue') // Node.js version +var match = /^v(\d+)\.(\d+)\./.exec(process.version) +var version = match ? Number(match[1]) + Number('0.' + match[2]) : 11 +var onreadMode = version >= 11.1 ? 2 : 1 var mode = 'modern' +var setNRead +if (onreadMode === 2) { + var sw = process.binding('stream_wrap') + setNRead = function (nread) { + sw.streamBaseState[sw.kReadBytesOrError] = nread + } +} + function Handle (stream, options) { EventEmitter.call(this) @@ -31,6 +42,15 @@ Handle.create = function create (stream, options) { return new Handle(stream, options) } +Handle.prototype._onread = function _onread (nread, buffer) { + if (onreadMode === 1) { + this.onread(nread, buffer) + } else { + setNRead(nread) + this.onread(buffer) + } +} + Handle.prototype._queueReq = function _queueReq (type, req) { return this.pending.append(type, req) } @@ -81,17 +101,17 @@ var uv = process.binding('uv') Handle.prototype._flow = function flow () { var self = this this._stream.on('data', function (chunk) { - self.onread(chunk.length, chunk) + self._onread(chunk.length, chunk) }) this._stream.on('end', function () { - self.onread(uv.UV_EOF, Buffer.alloc(0)) + self._onread(uv.UV_EOF, Buffer.alloc(0)) }) this._stream.on('close', function () { setImmediate(function () { if (self._reading) { - self.onread(uv.UV_ECONNRESET, Buffer.alloc(0)) + self._onread(uv.UV_ECONNRESET, Buffer.alloc(0)) } }) }) From d2ce57b52d68653a52447c6e403cfb31a38edf68 Mon Sep 17 00:00:00 2001 From: Michael Ferris Date: Tue, 10 Dec 2019 12:58:47 -0500 Subject: [PATCH 2/2] feat: add version 11 & 12 nodejs for testing --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 8023999..789c949 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,8 @@ node_js: - "6" - "8" - "10" + - "11.1" + - "12" script: - npm run lint