From 38e86552f1516cff5705c66dc1aeff5eb9f97d65 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Fri, 22 Aug 2025 13:01:01 +0200 Subject: [PATCH] refactor: factor out worket set event emission MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- src/worker/WorkerSet.ts | 48 +++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 31 deletions(-) diff --git a/src/worker/WorkerSet.ts b/src/worker/WorkerSet.ts index 50db7559..e47e0ed6 100644 --- a/src/worker/WorkerSet.ts +++ b/src/worker/WorkerSet.ts @@ -122,9 +122,7 @@ export class WorkerSet extends Worke await sleep(randomizeDelay(this.workerOptions.workerStartDelay)) } this.started = true - if (this.emitter != null && this.emitter.listenerCount(WorkerSetEvents.started) > 0) { - this.emitter.emit(WorkerSetEvents.started, this.info) - } + this.safeEmit(WorkerSetEvents.started, this.info) } /** @inheritDoc */ @@ -179,22 +177,12 @@ export class WorkerSet extends Worke const { reject, resolve, workerSetElement } = this.promiseResponseMap.get(uuid)! switch (event) { case WorkerMessageEvents.addedWorkerElement: - if ( - this.emitter != null && - this.emitter.listenerCount(WorkerSetEvents.elementAdded) > 0 - ) { - this.emitter.emit(WorkerSetEvents.elementAdded, this.info) - } + this.safeEmit(WorkerSetEvents.elementAdded, this.info) ++workerSetElement.numberOfWorkerElements resolve(data) break case WorkerMessageEvents.workerElementError: - if ( - this.emitter != null && - this.emitter.listenerCount(WorkerSetEvents.elementError) > 0 - ) { - this.emitter.emit(WorkerSetEvents.elementError, data) - } + this.safeEmit(WorkerSetEvents.elementError, data) reject(data) break default: @@ -205,27 +193,21 @@ export class WorkerSet extends Worke 2 )}'` ) - if (this.emitter != null && this.emitter.listenerCount(WorkerSetEvents.error) > 0) { - this.emitter.emit(WorkerSetEvents.error, error) - } + this.safeEmit(WorkerSetEvents.error, error) reject(error) } this.promiseResponseMap.delete(uuid) } else { - if (this.emitter != null && this.emitter.listenerCount(WorkerSetEvents.elementError) > 0) { - this.emitter.emit(WorkerSetEvents.elementError, { - data, - event, - message: `Unknown worker message uuid: '${uuid}'`, - }) - } + this.safeEmit(WorkerSetEvents.elementError, { + data, + event, + message: `Unknown worker message uuid: '${uuid}'`, + }) } }) worker.on('error', this.workerOptions.poolOptions?.errorHandler ?? EMPTY_FUNCTION) worker.once('error', error => { - if (this.emitter != null && this.emitter.listenerCount(WorkerSetEvents.error) > 0) { - this.emitter.emit(WorkerSetEvents.error, error) - } + this.safeEmit(WorkerSetEvents.error, error) const workerSetElement = this.getWorkerSetElementByWorker(worker) if (workerSetElement != null) { this.rejectPendingPromiseForWorker(workerSetElement, error) @@ -240,9 +222,7 @@ export class WorkerSet extends Worke worker.unref() // eslint-disable-next-line promise/no-promise-in-callback worker.terminate().catch((error: unknown) => { - if (this.emitter != null && this.emitter.listenerCount(WorkerSetEvents.error) > 0) { - this.emitter.emit(WorkerSetEvents.error, error) - } + this.safeEmit(WorkerSetEvents.error, error) }) }) worker.on('online', this.workerOptions.poolOptions?.onlineHandler ?? EMPTY_FUNCTION) @@ -313,4 +293,10 @@ export class WorkerSet extends Worke } this.workerSet.delete(workerSetElement) } + + private safeEmit (event: WorkerSetEvents, ...args: unknown[]): void { + if (this.emitter != null && this.emitter.listenerCount(event) > 0) { + this.emitter.emit(event, ...args) + } + } } -- 2.43.0