X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FStationWorker.ts;h=65e2fb8832883662aadb145798da9783f37a1ae2;hb=3ba49ba9f96d06c09f19009dcbe9360eb172782a;hp=c7bc2337b0e772c4d73a3712b0606b9981500096;hpb=3d2ff9e4875d166265bb925e00a4301e82f5c248;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/StationWorker.ts b/src/charging-station/StationWorker.ts index c7bc2337..65e2fb88 100644 --- a/src/charging-station/StationWorker.ts +++ b/src/charging-station/StationWorker.ts @@ -1,26 +1,34 @@ +import { StationWorkerData, WorkerEvents } from '../types/Worker'; import { isMainThread, parentPort, workerData } from 'worker_threads'; -import Constants from '../utils/Constants'; import ChargingStation from './ChargingStation'; +import Constants from '../utils/Constants'; +import { ThreadWorker } from 'poolifier'; +import Utils from '../utils/Utils'; -if (!isMainThread) { - const station = new ChargingStation(workerData.index as number, workerData.templateFile as string); - station.start(); +// Conditionally export ThreadWorker instance for pool usage +export let threadWorker; +if (Utils.workerPoolInUse()) { + threadWorker = new ThreadWorker(startChargingStation, { maxInactiveTime: Constants.WORKER_POOL_MAX_INACTIVE_TIME, async: false }); +} - // Listener: start new charging station from main thread +if (!isMainThread) { + // Add listener to start charging station from main thread addListener(); + if (!Utils.isUndefined(workerData)) { + startChargingStation({ index: workerData.index as number, templateFile: workerData.templateFile as string }); + } } function addListener() { - parentPort.setMaxListeners(1000); - parentPort.on("message", e => { - if (e.id === Constants.START_NEW_CHARGING_STATION) { - startChargingStation(e.workerData); + parentPort.on('message', (message) => { + if (message.id === WorkerEvents.START_WORKER_ELEMENT) { + startChargingStation(message.workerData); } }); } -function startChargingStation(data: any) { - const station = new ChargingStation(data.index as number, data.templateFile as string); +function startChargingStation(data: StationWorkerData) { + const station = new ChargingStation(data.index , data.templateFile); station.start(); }