X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fworker%2FWorkerSet.ts;h=1774c24a4f17585e8ce1c6dd4bbcef1c109a5fee;hb=626d3ce5e6dfdc848cb2bb5833044fe6fbe68324;hp=1e3000cc2f719722fe6ddded93cae1ca4acc3e45;hpb=1d7a504ba27c38e3f8617c80cf53aed85da580af;p=e-mobility-charging-stations-simulator.git diff --git a/src/worker/WorkerSet.ts b/src/worker/WorkerSet.ts index 1e3000cc..1774c24a 100644 --- a/src/worker/WorkerSet.ts +++ b/src/worker/WorkerSet.ts @@ -130,7 +130,11 @@ export class WorkerSet extends Worke data: elementData } satisfies WorkerMessage workerSetElement.worker.postMessage(message) - this.promiseResponseMap.set(message.uuid, { resolve, reject, workerSetElement }) + this.promiseResponseMap.set(message.uuid, { + resolve, + reject, + workerSetElement + }) }) const response = await sendMessageToWorker // Add element sequentially to optimize memory at startup @@ -157,19 +161,32 @@ export class WorkerSet extends Worke if (this.promiseResponseMap.has(uuid)) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const { resolve, reject, workerSetElement } = this.promiseResponseMap.get(uuid)! - if (event === WorkerMessageEvents.addedWorkerElement) { - this.emitter?.emit(WorkerSetEvents.elementAdded, this.info) - workerSetElement.numberOfWorkerElements++ - resolve(data) - } else if (event === WorkerMessageEvents.workerElementError) { - this.emitter?.emit(WorkerSetEvents.elementError, data) - reject(data) + switch (event) { + case WorkerMessageEvents.addedWorkerElement: + this.emitter?.emit(WorkerSetEvents.elementAdded, this.info) + ++workerSetElement.numberOfWorkerElements + resolve(data) + break + case WorkerMessageEvents.workerElementError: + this.emitter?.emit(WorkerSetEvents.elementError, data) + reject(data) + break + default: + reject( + new Error( + `Unknown worker message event: '${event}' received with data: '${JSON.stringify( + data, + undefined, + 2 + )}'` + ) + ) } - this.promiseResponseMap.delete(message.uuid) + this.promiseResponseMap.delete(uuid) } }) worker.on('error', this.workerOptions.poolOptions?.errorHandler ?? EMPTY_FUNCTION) - worker.on('error', error => { + worker.once('error', error => { this.emitter?.emit(WorkerSetEvents.error, error) if ( this.workerOptions.poolOptions?.restartWorkerOnError === true && @@ -186,7 +203,10 @@ export class WorkerSet extends Worke worker.once('exit', () => { this.removeWorkerSetElement(this.getWorkerSetElementByWorker(worker)) }) - const workerSetElement: WorkerSetElement = { worker, numberOfWorkerElements: 0 } + const workerSetElement: WorkerSetElement = { + worker, + numberOfWorkerElements: 0 + } this.workerSet.add(workerSetElement) this.workerStartup = false return workerSetElement