Skip to content

Commit

Permalink
timers: add helper fn for async init
Browse files Browse the repository at this point in the history
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: #18825
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
  • Loading branch information
apapirovski committed Feb 19, 2018
1 parent 30f89df commit 28f3ffb
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 28 deletions.
18 changes: 10 additions & 8 deletions lib/internal/timers.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ module.exports = {
async_id_symbol,
trigger_async_id_symbol,
Timeout,
initAsyncResource,
refreshFnSymbol,
setUnrefTimeout,
validateTimerDuration
Expand All @@ -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) {
Expand Down Expand Up @@ -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() {
Expand Down
23 changes: 3 additions & 20 deletions lib/timers.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ const {
async_id_symbol,
trigger_async_id_symbol,
Timeout,
initAsyncResource,
validateTimerDuration
} = require('internal/timers');
const internalUtil = require('internal/util');
Expand All @@ -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
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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]++;
Expand Down

0 comments on commit 28f3ffb

Please sign in to comment.