summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorZYSzys <17367077526@163.com>2019-01-04 10:40:22 +0800
committerAnna Henningsen <anna@addaleax.net>2019-01-27 17:20:13 +0100
commit802ea05a37e5d342ef26970daeb876f4f8405ce5 (patch)
tree672e3083a8a32f7ed19329e0c3ecf5906a6f9379 /lib
parentbb774b1554ed7ad7e7b6d588ef5002382afb8183 (diff)
downloadandroid-node-v8-802ea05a37e5d342ef26970daeb876f4f8405ce5.tar.gz
android-node-v8-802ea05a37e5d342ef26970daeb876f4f8405ce5.tar.bz2
android-node-v8-802ea05a37e5d342ef26970daeb876f4f8405ce5.zip
net,http2: merge setTimeout code
PR-URL: https://github.com/nodejs/node/pull/25084 Refs: https://github.com/nodejs/node/issues/19060 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/internal/http2/core.js41
-rw-r--r--lib/internal/stream_base_commons.js47
-rw-r--r--lib/net.js32
3 files changed, 55 insertions, 65 deletions
diff --git a/lib/internal/http2/core.js b/lib/internal/http2/core.js
index fc99b50eae..b78ecaf5ee 100644
--- a/lib/internal/http2/core.js
+++ b/lib/internal/http2/core.js
@@ -110,13 +110,11 @@ const {
onStreamRead,
kAfterAsyncWrite,
kMaybeDestroy,
- kUpdateTimer
+ kUpdateTimer,
+ kSession,
+ setStreamTimeout
} = require('internal/stream_base_commons');
-const {
- kTimeout,
- setUnrefTimeout,
- validateTimerDuration
-} = require('internal/timers');
+const { kTimeout } = require('internal/timers');
const { isArrayBufferView } = require('internal/util/types');
const { FileHandle } = internalBinding('fs');
@@ -163,7 +161,6 @@ const kSelectPadding = Symbol('select-padding');
const kSentHeaders = Symbol('sent-headers');
const kSentTrailers = Symbol('sent-trailers');
const kServer = Symbol('server');
-const kSession = Symbol('session');
const kState = Symbol('state');
const kType = Symbol('type');
const kWriteGeneric = Symbol('write-generic');
@@ -2546,35 +2543,7 @@ const setTimeout = {
configurable: true,
enumerable: true,
writable: true,
- value: function(msecs, callback) {
- if (this.destroyed)
- return;
-
- // Type checking identical to timers.enroll()
- msecs = validateTimerDuration(msecs);
-
- // Attempt to clear an existing timer lear in both cases -
- // even if it will be rescheduled we don't want to leak an existing timer.
- clearTimeout(this[kTimeout]);
-
- if (msecs === 0) {
- if (callback !== undefined) {
- if (typeof callback !== 'function')
- throw new ERR_INVALID_CALLBACK();
- this.removeListener('timeout', callback);
- }
- } else {
- this[kTimeout] = setUnrefTimeout(this._onTimeout.bind(this), msecs);
- if (this[kSession]) this[kSession][kUpdateTimer]();
-
- if (callback !== undefined) {
- if (typeof callback !== 'function')
- throw new ERR_INVALID_CALLBACK();
- this.once('timeout', callback);
- }
- }
- return this;
- }
+ value: setStreamTimeout
};
Object.defineProperty(Http2Stream.prototype, 'setTimeout', setTimeout);
Object.defineProperty(Http2Session.prototype, 'setTimeout', setTimeout);
diff --git a/lib/internal/stream_base_commons.js b/lib/internal/stream_base_commons.js
index 31291e751d..6de03c09d8 100644
--- a/lib/internal/stream_base_commons.js
+++ b/lib/internal/stream_base_commons.js
@@ -11,12 +11,23 @@ const {
streamBaseState
} = internalBinding('stream_wrap');
const { UV_EOF } = internalBinding('uv');
-const { errnoException } = require('internal/errors');
+const {
+ codes: {
+ ERR_INVALID_CALLBACK
+ },
+ errnoException
+} = require('internal/errors');
const { owner_symbol } = require('internal/async_hooks').symbols;
+const {
+ kTimeout,
+ setUnrefTimeout,
+ validateTimerDuration
+} = require('internal/timers');
const kMaybeDestroy = Symbol('kMaybeDestroy');
const kUpdateTimer = Symbol('kUpdateTimer');
const kAfterAsyncWrite = Symbol('kAfterAsyncWrite');
+const kSession = Symbol('session');
function handleWriteReq(req, data, encoding) {
const { handle } = req;
@@ -178,6 +189,38 @@ function onStreamRead(arrayBuffer) {
}
}
+function setStreamTimeout(msecs, callback) {
+ if (this.destroyed)
+ return;
+
+ this.timeout = msecs;
+
+ // Type checking identical to timers.enroll()
+ msecs = validateTimerDuration(msecs);
+
+ // Attempt to clear an existing timer in both cases -
+ // even if it will be rescheduled we don't want to leak an existing timer.
+ clearTimeout(this[kTimeout]);
+
+ if (msecs === 0) {
+ if (callback !== undefined) {
+ if (typeof callback !== 'function')
+ throw new ERR_INVALID_CALLBACK();
+ this.removeListener('timeout', callback);
+ }
+ } else {
+ this[kTimeout] = setUnrefTimeout(this._onTimeout.bind(this), msecs);
+ if (this[kSession]) this[kSession][kUpdateTimer]();
+
+ if (callback !== undefined) {
+ if (typeof callback !== 'function')
+ throw new ERR_INVALID_CALLBACK();
+ this.once('timeout', callback);
+ }
+ }
+ return this;
+}
+
module.exports = {
createWriteWrap,
writevGeneric,
@@ -186,4 +229,6 @@ module.exports = {
kAfterAsyncWrite,
kMaybeDestroy,
kUpdateTimer,
+ kSession,
+ setStreamTimeout
};
diff --git a/lib/net.js b/lib/net.js
index 9eb7448c59..1cea5bf6ce 100644
--- a/lib/net.js
+++ b/lib/net.js
@@ -63,7 +63,8 @@ const {
writeGeneric,
onStreamRead,
kAfterAsyncWrite,
- kUpdateTimer
+ kUpdateTimer,
+ setStreamTimeout
} = require('internal/stream_base_commons');
const {
codes: {
@@ -89,11 +90,7 @@ const kLastWriteQueueSize = Symbol('lastWriteQueueSize');
let cluster;
let dns;
-const {
- kTimeout,
- setUnrefTimeout,
- validateTimerDuration
-} = require('internal/timers');
+const { kTimeout } = require('internal/timers');
function noop() {}
@@ -405,28 +402,7 @@ function writeAfterFIN(chunk, encoding, cb) {
}
}
-Socket.prototype.setTimeout = function(msecs, callback) {
- this.timeout = msecs;
- // Type checking identical to timers.enroll()
- msecs = validateTimerDuration(msecs);
-
- // Attempt to clear an existing timer in both cases -
- // even if it will be rescheduled we don't want to leak an existing timer.
- clearTimeout(this[kTimeout]);
-
- if (msecs === 0) {
- if (callback) {
- this.removeListener('timeout', callback);
- }
- } else {
- this[kTimeout] = setUnrefTimeout(this._onTimeout.bind(this), msecs);
-
- if (callback) {
- this.once('timeout', callback);
- }
- }
- return this;
-};
+Socket.prototype.setTimeout = setStreamTimeout;
Socket.prototype._onTimeout = function() {