X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FStationWorker.ts;h=a948a1b4bbb1bfc1572ffe3dbac8a47d6e6149bc;hb=4faad557cd49253297c7d0230db2eecfd850b4f4;hp=68c3ea24c0f96c4def2f5c187050bd5e816dc04b;hpb=ad3de6c4ec07b788fe1c84a40081902c3abc5b3b;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/StationWorker.ts b/src/charging-station/StationWorker.ts index 68c3ea24..a948a1b4 100644 --- a/src/charging-station/StationWorker.ts +++ b/src/charging-station/StationWorker.ts @@ -1,8 +1,25 @@ -import { isMainThread, workerData } from 'worker_threads'; +import { isMainThread, parentPort, workerData } from 'worker_threads'; import ChargingStation from './ChargingStation'; +import Constants from '../utils/Constants'; if (!isMainThread) { - const station = new ChargingStation(workerData.index as number, workerData.templateFile as string); + startChargingStation({ index: workerData.index as number, templateFile: workerData.templateFile as string }); + + // Listener: start new charging station from main thread + addListener(); +} + +function addListener() { + parentPort.setMaxListeners(Constants.MAX_LISTENERS); + parentPort.on('message', (e) => { + if (e.id === Constants.START_WORKER_ELEMENT) { + startChargingStation(e.workerData); + } + }); +} + +function startChargingStation(data: any) { + const station = new ChargingStation(data.index as number, data.templateFile as string); station.start(); }