Skip to content

Commit dd2de6b

Browse files
authored
Merge pull request #13 from Cellule/node-11
Fix support for node 11.1 and above
2 parents 219d451 + d2ce57b commit dd2de6b

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ node_js:
66
- "6"
77
- "8"
88
- "10"
9+
- "11.1"
10+
- "12"
911

1012
script:
1113
- npm run lint

lib/handle.js

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,19 @@ var Buffer = require('buffer').Buffer
77
var Queue = require('./queue')
88

99
// Node.js version
10+
var match = /^v(\d+)\.(\d+)\./.exec(process.version)
11+
var version = match ? Number(match[1]) + Number('0.' + match[2]) : 11
12+
var onreadMode = version >= 11.1 ? 2 : 1
1013
var mode = 'modern'
1114

15+
var setNRead
16+
if (onreadMode === 2) {
17+
var sw = process.binding('stream_wrap')
18+
setNRead = function (nread) {
19+
sw.streamBaseState[sw.kReadBytesOrError] = nread
20+
}
21+
}
22+
1223
function Handle (stream, options) {
1324
EventEmitter.call(this)
1425

@@ -31,6 +42,15 @@ Handle.create = function create (stream, options) {
3142
return new Handle(stream, options)
3243
}
3344

45+
Handle.prototype._onread = function _onread (nread, buffer) {
46+
if (onreadMode === 1) {
47+
this.onread(nread, buffer)
48+
} else {
49+
setNRead(nread)
50+
this.onread(buffer)
51+
}
52+
}
53+
3454
Handle.prototype._queueReq = function _queueReq (type, req) {
3555
return this.pending.append(type, req)
3656
}
@@ -81,17 +101,17 @@ var uv = process.binding('uv')
81101
Handle.prototype._flow = function flow () {
82102
var self = this
83103
this._stream.on('data', function (chunk) {
84-
self.onread(chunk.length, chunk)
104+
self._onread(chunk.length, chunk)
85105
})
86106

87107
this._stream.on('end', function () {
88-
self.onread(uv.UV_EOF, Buffer.alloc(0))
108+
self._onread(uv.UV_EOF, Buffer.alloc(0))
89109
})
90110

91111
this._stream.on('close', function () {
92112
setImmediate(function () {
93113
if (self._reading) {
94-
self.onread(uv.UV_ECONNRESET, Buffer.alloc(0))
114+
self._onread(uv.UV_ECONNRESET, Buffer.alloc(0))
95115
}
96116
})
97117
})

0 commit comments

Comments
 (0)