X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fworker%2FWorkerSet.ts;h=f10ca9c8ce0f4fbfbd58a10faf0f44ab6073b20a;hb=17ba3be0bb5c0bcb7fff2cefa877af975c0d043a;hp=ea5d654cdd001f599e6af1b670e61e494852430c;hpb=5199f9fdf202eb534948f165a0994e1993675aa8;p=e-mobility-charging-stations-simulator.git diff --git a/src/worker/WorkerSet.ts b/src/worker/WorkerSet.ts index ea5d654c..f10ca9c8 100644 --- a/src/worker/WorkerSet.ts +++ b/src/worker/WorkerSet.ts @@ -1,4 +1,4 @@ -// Partial Copyright Jerome Benoit. 2021-2023. All Rights Reserved. +// Partial Copyright Jerome Benoit. 2021-2024. All Rights Reserved. import { EventEmitterAsyncResource } from 'node:events' import { SHARE_ENV, Worker } from 'node:worker_threads' @@ -52,6 +52,7 @@ export class WorkerSet extends WorkerAbstract { version: workerSetVersion, type: 'set', worker: 'thread', + started: this.started, size: this.size, elementsExecuting: [...this.workerSet].reduce( (accumulator, workerSetElement) => accumulator + workerSetElement.numberOfWorkerElements, @@ -86,18 +87,18 @@ export class WorkerSet extends WorkerAbstract { public async stop (): Promise { for (const workerSetElement of this.workerSet) { const worker = workerSetElement.worker - const waitWorkerExit = new Promise((resolve) => { + const waitWorkerExit = new Promise(resolve => { worker.once('exit', () => { resolve() }) }) await worker.terminate() await waitWorkerExit - this.emitter?.emit(WorkerSetEvents.stopped, this.info) - this.emitter?.emitDestroy() - this.emitter?.removeAllListeners() - this.started = false } + this.emitter?.emit(WorkerSetEvents.stopped, this.info) + this.emitter?.emitDestroy() + this.emitter?.removeAllListeners() + this.started = false } /** @inheritDoc */ @@ -107,7 +108,7 @@ export class WorkerSet extends WorkerAbstract { } const workerSetElement = await this.getWorkerSetElement() workerSetElement.worker.postMessage({ - event: WorkerMessageEvents.startWorkerElement, + event: WorkerMessageEvents.addWorkerElement, data: elementData }) ++workerSetElement.numberOfWorkerElements @@ -130,14 +131,14 @@ export class WorkerSet extends WorkerAbstract { }) worker.on('message', this.workerOptions.poolOptions?.messageHandler ?? EMPTY_FUNCTION) worker.on('message', (message: WorkerMessage) => { - if (message.event === WorkerMessageEvents.startedWorkerElement) { - this.emitter?.emit(WorkerSetEvents.elementStarted, this.info) - } else if (message.event === WorkerMessageEvents.startWorkerElementError) { + if (message.event === WorkerMessageEvents.addedWorkerElement) { + this.emitter?.emit(WorkerSetEvents.elementAdded, this.info) + } else if (message.event === WorkerMessageEvents.workerElementError) { this.emitter?.emit(WorkerSetEvents.elementError, message.data) } }) worker.on('error', this.workerOptions.poolOptions?.errorHandler ?? EMPTY_FUNCTION) - worker.on('error', (error) => { + worker.on('error', error => { this.emitter?.emit(WorkerSetEvents.error, error) if ( this.workerOptions.poolOptions?.restartWorkerOnError === true &&