+ private async waitChargingStationsStopped(): Promise<void> {
+ await Promise.race([
+ waitChargingStationEvents(
+ this,
+ ChargingStationWorkerMessageEvents.stopped,
+ this.numberOfChargingStations,
+ ),
+ new Promise<string>((resolve) => {
+ setTimeout(() => {
+ const message = `Timeout ${formatDurationMilliSeconds(
+ Constants.STOP_SIMULATOR_TIMEOUT,
+ )} reached at stopping charging stations simulator`;
+ console.warn(chalk.yellow(message));
+ resolve(message);
+ }, Constants.STOP_SIMULATOR_TIMEOUT);
+ }),
+ ]);
+ }
+
+ private initializeWorkerImplementation(workerConfiguration: WorkerConfiguration): void {
+ let elementsPerWorker: number | undefined;
+ if (workerConfiguration?.elementsPerWorker === 'auto') {
+ elementsPerWorker =
+ this.numberOfChargingStations > availableParallelism()
+ ? Math.round(this.numberOfChargingStations / (availableParallelism() * 1.5))
+ : 1;
+ }