timers: add helper fn for async init
There are currently 3 places in Timers where the exact same code appears. Instead create a helper function that does the same job of setting asyncId & triggerAsyncId, as well as calling emitInit. PR-URL: https://github.com/nodejs/node/pull/18825 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
parent
30f89dfbf6
commit
28f3ffba0f
@ -24,6 +24,7 @@ module.exports = {
|
||||
async_id_symbol,
|
||||
trigger_async_id_symbol,
|
||||
Timeout,
|
||||
initAsyncResource,
|
||||
refreshFnSymbol,
|
||||
setUnrefTimeout,
|
||||
validateTimerDuration
|
||||
@ -37,6 +38,14 @@ function getTimers() {
|
||||
return timers;
|
||||
}
|
||||
|
||||
function initAsyncResource(resource, type) {
|
||||
const asyncId = resource[async_id_symbol] = newAsyncId();
|
||||
const triggerAsyncId =
|
||||
resource[trigger_async_id_symbol] = getDefaultTriggerAsyncId();
|
||||
if (initHooksExist())
|
||||
emitInit(asyncId, type, triggerAsyncId, resource);
|
||||
}
|
||||
|
||||
// Timer constructor function.
|
||||
// The entire prototype is defined in lib/timers.js
|
||||
function Timeout(callback, after, args, isRepeat, isUnrefed) {
|
||||
@ -66,14 +75,7 @@ function Timeout(callback, after, args, isRepeat, isUnrefed) {
|
||||
|
||||
this[unrefedSymbol] = isUnrefed;
|
||||
|
||||
this[async_id_symbol] = newAsyncId();
|
||||
this[trigger_async_id_symbol] = getDefaultTriggerAsyncId();
|
||||
if (initHooksExist()) {
|
||||
emitInit(this[async_id_symbol],
|
||||
'Timeout',
|
||||
this[trigger_async_id_symbol],
|
||||
this);
|
||||
}
|
||||
initAsyncResource(this, 'Timeout');
|
||||
}
|
||||
|
||||
Timeout.prototype[refreshFnSymbol] = function refresh() {
|
||||
|
@ -30,6 +30,7 @@ const {
|
||||
async_id_symbol,
|
||||
trigger_async_id_symbol,
|
||||
Timeout,
|
||||
initAsyncResource,
|
||||
validateTimerDuration
|
||||
} = require('internal/timers');
|
||||
const internalUtil = require('internal/util');
|
||||
@ -39,12 +40,8 @@ const util = require('util');
|
||||
const errors = require('internal/errors');
|
||||
const debug = util.debuglog('timer');
|
||||
const {
|
||||
getDefaultTriggerAsyncId,
|
||||
newAsyncId,
|
||||
initHooksExist,
|
||||
destroyHooksExist,
|
||||
// The needed emit*() functions.
|
||||
emitInit,
|
||||
emitBefore,
|
||||
emitAfter,
|
||||
emitDestroy
|
||||
@ -188,14 +185,7 @@ function insert(item, unrefed, start) {
|
||||
|
||||
if (!item[async_id_symbol] || item._destroyed) {
|
||||
item._destroyed = false;
|
||||
item[async_id_symbol] = newAsyncId();
|
||||
item[trigger_async_id_symbol] = getDefaultTriggerAsyncId();
|
||||
if (initHooksExist()) {
|
||||
emitInit(item[async_id_symbol],
|
||||
'Timeout',
|
||||
item[trigger_async_id_symbol],
|
||||
item);
|
||||
}
|
||||
initAsyncResource(item, 'Timeout');
|
||||
}
|
||||
|
||||
L.append(list, item);
|
||||
@ -720,14 +710,7 @@ const Immediate = class Immediate {
|
||||
this._destroyed = false;
|
||||
this[kRefed] = false;
|
||||
|
||||
this[async_id_symbol] = newAsyncId();
|
||||
this[trigger_async_id_symbol] = getDefaultTriggerAsyncId();
|
||||
if (initHooksExist()) {
|
||||
emitInit(this[async_id_symbol],
|
||||
'Immediate',
|
||||
this[trigger_async_id_symbol],
|
||||
this);
|
||||
}
|
||||
initAsyncResource(this, 'Immediate');
|
||||
|
||||
this.ref();
|
||||
immediateInfo[kCount]++;
|
||||
|
Loading…
x
Reference in New Issue
Block a user