Skip to content

Commit

Permalink
refactor: move resume/pause to parser
Browse files Browse the repository at this point in the history
  • Loading branch information
ronag committed Nov 13, 2020
1 parent f43627e commit 37ecb75
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 22 deletions.
45 changes: 24 additions & 21 deletions lib/core/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ const {
const {
kUrl,
kReset,
kPause,
kHost,
kResume,
kClient,
Expand Down Expand Up @@ -375,6 +374,16 @@ class Parser extends HTTPParser {
this.headers = null
this.shouldKeepAlive = false
this.request = null

this._resume = () => {
// TODO: Resume parser.
socketResume(socket)
}

this._pause = () => {
// TODO: Pause parser.
socketPause(socket)
}
}

[HTTPParser.kOnHeaders] (rawHeaders) {
Expand Down Expand Up @@ -437,8 +446,6 @@ class Parser extends HTTPParser {
setImmediate((self) => self.close(), socket[kParser])
socket[kParser] = null

socket[kPause] = null
socket[kResume] = null
socket[kClient] = null
socket[kError] = null
socket
Expand Down Expand Up @@ -541,8 +548,8 @@ class Parser extends HTTPParser {
}

try {
if (request.onHeaders(statusCode, headers, socket[kResume]) === false) {
socket[kPause]()
if (request.onHeaders(statusCode, headers, this._resume) === false) {
this._pause()
}
} catch (err) {
util.destroy(socket, err)
Expand All @@ -563,7 +570,7 @@ class Parser extends HTTPParser {

try {
if (request.onBody(chunk, offset, length) === false) {
socket[kPause]()
this._pause()
}
} catch (err) {
util.destroy(socket, err)
Expand Down Expand Up @@ -636,7 +643,7 @@ class Parser extends HTTPParser {
// have been queued since then.
util.destroy(socket, new InformationalError('reset'))
} else {
socket[kResume]()
socketResume(socket)
resume(client)
}
}
Expand Down Expand Up @@ -766,8 +773,6 @@ function connect (client) {

socket[kIdleTimeout] = null
socket[kIdleTimeoutValue] = null
socket[kPause] = socketPause.bind(socket)
socket[kResume] = socketResume.bind(socket)
socket[kError] = null
socket[kParser] = parser
socket[kClient] = client
Expand All @@ -779,24 +784,22 @@ function connect (client) {
.on('close', onSocketClose)
}

function socketPause () {
// TODO: Pause parser.
if (this._handle && this._handle.reading) {
this._handle.reading = false
const err = this._handle.readStop()
function socketPause (socket) {
if (socket._handle && socket._handle.reading) {
socket._handle.reading = false
const err = socket._handle.readStop()
if (err) {
this.destroy(util.errnoException(err, 'read'))
socket.destroy(util.errnoException(err, 'read'))
}
}
}

function socketResume () {
// TODO: Resume parser.
if (this._handle && !this._handle.reading) {
this._handle.reading = true
const err = this._handle.readStart()
function socketResume (socket) {
if (socket._handle && !socket._handle.reading) {
socket._handle.reading = true
const err = socket._handle.readStart()
if (err) {
this.destroy(util.errnoException(err, 'read'))
socket.destroy(util.errnoException(err, 'read'))
}
}
}
Expand Down
1 change: 0 additions & 1 deletion lib/core/symbols.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ module.exports = {
kQueue: Symbol('queue'),
kConnect: Symbol('connect'),
kResume: Symbol('resume'),
kPause: Symbol('pause'),
kIdleTimeout: Symbol('idle timeout'),
kIdleTimeoutValue: Symbol('idle timeout value'),
kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),
Expand Down

0 comments on commit 37ecb75

Please sign in to comment.