X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fworker%2FWorkerSet.ts;h=4a43e27b0601c44d3035c77411640cefd2fe798a;hb=bb29949603108e1bc169ffbad4bc76d2d126dc9d;hp=8b723deaeb3d33d750965c17a45dffc7a931844a;hpb=13a6f27c10768faa05acf33fd8e0637511d49e3e;p=e-mobility-charging-stations-simulator.git diff --git a/src/worker/WorkerSet.ts b/src/worker/WorkerSet.ts index 8b723dea..4a43e27b 100644 --- a/src/worker/WorkerSet.ts +++ b/src/worker/WorkerSet.ts @@ -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, @@ -91,13 +92,14 @@ export class WorkerSet extends WorkerAbstract { resolve() }) }) + worker.unref() 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.started = false + this.emitter?.emitDestroy() + this.emitter?.removeAllListeners() } /** @inheritDoc */ @@ -107,7 +109,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,9 +132,9 @@ 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) } }) @@ -146,6 +148,8 @@ export class WorkerSet extends WorkerAbstract { ) { this.addWorkerSetElement() } + worker.unref() + worker.terminate().catch(error => this.emitter?.emit(WorkerSetEvents.error, error)) }) worker.on('online', this.workerOptions.poolOptions?.onlineHandler ?? EMPTY_FUNCTION) worker.on('exit', this.workerOptions.poolOptions?.exitHandler ?? EMPTY_FUNCTION)