X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fstart.ts;h=3b9fc75b287c7c8d9eff1296dd0eb720ddb09fe0;hb=97ed5cec983f91ed1cdb903c13505994a6e0d23b;hp=67df5a3f44b1538ebabc3eeb4f79d5c87afaf6a7;hpb=5fdab605ce885d9a9fb21ac47c6d0766bd3673bb;p=e-mobility-charging-stations-simulator.git diff --git a/src/start.ts b/src/start.ts index 67df5a3f..3b9fc75b 100644 --- a/src/start.ts +++ b/src/start.ts @@ -10,8 +10,6 @@ class Bootstrap { let numStationsTotal = 0; let numConcurrentWorkers = 0; let worker: Wrk; - const chargingStationsPerWorker = Configuration.getChargingStationsPerWorker(); - let counter = 0; // Start each ChargingStation object in a worker thread if (Configuration.getStationTemplateURLs()) { for await (const stationURL of Configuration.getStationTemplateURLs()) { @@ -23,19 +21,27 @@ class Bootstrap { index, templateFile: stationURL.file } as WorkerData; - if (counter === 0 || counter === chargingStationsPerWorker) { - // Start new worker with one charging station - worker = new Wrk('./dist/charging-station/StationWorker.js', workerData, numStationsTotal); + if (Configuration.useWorkerPool()) { + worker = new Wrk('./dist/charging-station/StationWorker.js', workerData); worker.start().catch(() => { }); - counter = 0; - // Start workers sequentially to optimize memory at start time - await Utils.sleep(Constants.START_WORKER_DELAY); + numConcurrentWorkers = Configuration.getWorkerPoolSize(); } else { - // Add charging station to existing Worker - worker.addChargingStation(workerData, numStationsTotal); + const chargingStationsPerWorker = Configuration.getChargingStationsPerWorker(); + let chargingStationsPerWorkerCounter = 0; + if (chargingStationsPerWorkerCounter === 0 || chargingStationsPerWorkerCounter === chargingStationsPerWorker) { + // Start new Wrk with one charging station + worker = new Wrk('./dist/charging-station/StationWorker.js', workerData, chargingStationsPerWorker); + worker.start().catch(() => { }); + numConcurrentWorkers++; + chargingStationsPerWorkerCounter = 1; + // Start Wrk sequentially to optimize memory at start time + await Utils.sleep(Constants.START_WORKER_DELAY); + } else { + // Add charging station to existing Wrk + worker.addWorkerElement(workerData); + chargingStationsPerWorkerCounter++; + } } - counter++; - numConcurrentWorkers = worker.concurrentWorkers; } } catch (error) { // eslint-disable-next-line no-console