Optimize a loop in the worker related code.
[e-mobility-charging-stations-simulator.git] / src / worker / WorkerSet.ts
index 2ccd27961941ac5c56eb3ddb1a463138dea21495..e6421b14ab746fd816eadac1566fa44c4e705dbf 100644 (file)
@@ -1,8 +1,11 @@
+// Partial Copyright Jerome Benoit. 2021. All Rights Reserved.
+
 import { WorkerEvents, WorkerSetElement } from '../types/Worker';
 
 import Utils from '../utils/Utils';
 import { Worker } from 'worker_threads';
 import WorkerAbstract from './WorkerAbstract';
+import { WorkerUtils } from './WorkerUtils';
 
 export default class WorkerSet<T> extends WorkerAbstract {
   public maxElementsPerWorker: number;
@@ -76,9 +79,7 @@ export default class WorkerSet<T> extends WorkerAbstract {
     worker.on('message', () => { });
     worker.on('error', () => { });
     worker.on('exit', (code) => {
-      if (code !== 0) {
-        console.error(`Worker stopped with exit code ${code}`);
-      }
+      WorkerUtils.defaultExitHandler(code);
       this.workerSet.delete(this.getWorkerSetElementByWorker(worker));
     });
     this.workerSet.add({ worker, numberOfWorkerElements: 0 });
@@ -97,11 +98,12 @@ export default class WorkerSet<T> extends WorkerAbstract {
 
   private getWorkerSetElementByWorker(worker: Worker): WorkerSetElement {
     let workerSetElt: WorkerSetElement;
-    this.workerSet.forEach((workerSetElement) => {
+    for (const workerSetElement of this.workerSet) {
       if (workerSetElement.worker.threadId === worker.threadId) {
         workerSetElt = workerSetElement;
+        break;
       }
-    });
+    }
     return workerSetElt;
   }
 }