node/lib/internal/watchdog.js
Antoine du Hamel 5f76836277
lib: add trailing commas to more internal files
PR-URL: https://github.com/nodejs/node/pull/46811
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Debadree Chatterjee <debadree333@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
2023-02-26 11:34:02 +01:00

60 lines
1.3 KiB
JavaScript

'use strict';
const {
TraceSigintWatchdog,
} = internalBinding('watchdog');
class SigintWatchdog extends TraceSigintWatchdog {
_started = false;
_effective = false;
_onNewListener = (eve) => {
if (eve === 'SIGINT' && this._effective) {
super.stop();
this._effective = false;
}
};
_onRemoveListener = (eve) => {
if (eve === 'SIGINT' && process.listenerCount('SIGINT') === 0 &&
!this._effective) {
super.start();
this._effective = true;
}
};
start() {
if (this._started) {
return;
}
this._started = true;
// Prepend sigint newListener to remove stop watchdog before signal wrap
// been activated. Also make sigint removeListener been ran after signal
// wrap been stopped.
process.prependListener('newListener', this._onNewListener);
process.addListener('removeListener', this._onRemoveListener);
if (process.listenerCount('SIGINT') === 0) {
super.start();
this._effective = true;
}
}
stop() {
if (!this._started) {
return;
}
this._started = false;
process.removeListener('newListener', this._onNewListener);
process.removeListener('removeListener', this._onRemoveListener);
if (this._effective) {
super.stop();
this._effective = false;
}
}
}
module.exports = {
SigintWatchdog,
};