fix: fix worker options argument passing to worker pool/set
[e-mobility-charging-stations-simulator.git] / src / charging-station / Bootstrap.ts
index df0bb8e98cda7c85b30104ba9ed9fac37fceb610..d56beefcdc4df36076911751ce32f54dd26edf3e 100644 (file)
@@ -3,10 +3,11 @@
 import { EventEmitter } from 'node:events';
 import path from 'node:path';
 import { fileURLToPath } from 'node:url';
-import { type Worker, isMainThread } from 'node:worker_threads';
+import { isMainThread } from 'node:worker_threads';
 
 import chalk from 'chalk';
 
+import { ChargingStationUtils } from './ChargingStationUtils';
 import type { AbstractUIServer } from './ui-server/AbstractUIServer';
 import { UIServerFactory } from './ui-server/UIServerFactory';
 import packageJson from '../../package.json' assert { type: 'json' };
@@ -30,7 +31,7 @@ import {
   handleUnhandledRejection,
   logger,
 } from '../utils';
-import { type MessageHandler, type WorkerAbstract, WorkerFactory } from '../worker';
+import { type WorkerAbstract, WorkerFactory } from '../worker';
 
 const moduleName = 'Bootstrap';
 
@@ -161,7 +162,11 @@ export class Bootstrap extends EventEmitter {
             Constants.EMPTY_FREEZED_OBJECT
           )
         );
-        await this.waitForChargingStationsStopped();
+        await ChargingStationUtils.waitForChargingStationEvents(
+          this,
+          ChargingStationWorkerMessageEvents.stopped,
+          this.numberOfChargingStations
+        );
         await this.workerImplementation?.stop();
         this.workerImplementation = null;
         this.uiServer?.stop();
@@ -196,8 +201,8 @@ export class Bootstrap extends EventEmitter {
           elementsPerWorker: Configuration.getWorker().elementsPerWorker,
           poolOptions: {
             workerChoiceStrategy: Configuration.getWorker().poolStrategy,
+            messageHandler: this.messageHandler.bind(this) as (message: unknown) => void,
           },
-          messageHandler: this.messageHandler.bind(this) as MessageHandler<Worker>,
         }
       ));
   }
@@ -338,23 +343,6 @@ export class Bootstrap extends EventEmitter {
       });
   };
 
-  private waitForChargingStationsStopped = async (
-    stoppedEventsToWait = this.numberOfStartedChargingStations
-  ): Promise<number> => {
-    return new Promise((resolve) => {
-      let stoppedEvents = 0;
-      if (stoppedEventsToWait === 0) {
-        resolve(stoppedEvents);
-      }
-      this.on(ChargingStationWorkerMessageEvents.stopped, () => {
-        ++stoppedEvents;
-        if (stoppedEvents === stoppedEventsToWait) {
-          resolve(stoppedEvents);
-        }
-      });
-    });
-  };
-
   private logPrefix = (): string => {
     return Utils.logPrefix(' Bootstrap |');
   };