From: Jérôme Benoit Date: Sun, 12 Jun 2022 22:14:13 +0000 (+0200) Subject: Simplify Bootstrap initialization code X-Git-Tag: v1.1.63~7 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=ec7f4dcea28197007a32308483e8e8f4750fae5e;p=e-mobility-charging-stations-simulator.git Simplify Bootstrap initialization code Signed-off-by: Jérôme Benoit --- diff --git a/src/charging-station/Bootstrap.ts b/src/charging-station/Bootstrap.ts index 82aef5cd..bb76c906 100644 --- a/src/charging-station/Bootstrap.ts +++ b/src/charging-station/Bootstrap.ts @@ -44,7 +44,6 @@ export default class Bootstrap { 'ChargingStationWorker' + path.extname(fileURLToPath(import.meta.url)) ); this.initialize(); - this.initWorkerImplementation(); Configuration.getUIServer().enabled && (this.uiServer = UIServerFactory.getUIServerImplementation(ApplicationProtocol.WS, { ...Configuration.getUIServer().options, @@ -147,39 +146,40 @@ export default class Bootstrap { public async restart(): Promise { await this.stop(); this.initialize(); - this.initWorkerImplementation(); await this.start(); } - private initWorkerImplementation(): void { - this.workerImplementation = WorkerFactory.getWorkerImplementation( - this.workerScript, - Configuration.getWorkerProcess(), - { - workerStartDelay: Configuration.getWorkerStartDelay(), - elementStartDelay: Configuration.getElementStartDelay(), - poolMaxSize: Configuration.getWorkerPoolMaxSize(), - poolMinSize: Configuration.getWorkerPoolMinSize(), - elementsPerWorker: Configuration.getChargingStationsPerWorker(), - poolOptions: { - workerChoiceStrategy: Configuration.getWorkerPoolStrategy(), - }, - messageHandler: async (msg: ChargingStationWorkerMessage) => { - if (msg.id === ChargingStationWorkerMessageEvents.STARTED) { - this.uiServer.chargingStations.add(msg.data.id as string); - } else if (msg.id === ChargingStationWorkerMessageEvents.STOPPED) { - this.uiServer.chargingStations.delete(msg.data.id as string); - } else if (msg.id === ChargingStationWorkerMessageEvents.PERFORMANCE_STATISTICS) { - await this.storage.storePerformanceStatistics(msg.data as unknown as Statistics); - } - }, - } - ); + private initializeWorkerImplementation(): void { + !this.workerImplementation && + (this.workerImplementation = WorkerFactory.getWorkerImplementation( + this.workerScript, + Configuration.getWorkerProcess(), + { + workerStartDelay: Configuration.getWorkerStartDelay(), + elementStartDelay: Configuration.getElementStartDelay(), + poolMaxSize: Configuration.getWorkerPoolMaxSize(), + poolMinSize: Configuration.getWorkerPoolMinSize(), + elementsPerWorker: Configuration.getChargingStationsPerWorker(), + poolOptions: { + workerChoiceStrategy: Configuration.getWorkerPoolStrategy(), + }, + messageHandler: async (msg: ChargingStationWorkerMessage) => { + if (msg.id === ChargingStationWorkerMessageEvents.STARTED) { + this.uiServer.chargingStations.add(msg.data.id as string); + } else if (msg.id === ChargingStationWorkerMessageEvents.STOPPED) { + this.uiServer.chargingStations.delete(msg.data.id as string); + } else if (msg.id === ChargingStationWorkerMessageEvents.PERFORMANCE_STATISTICS) { + await this.storage.storePerformanceStatistics(msg.data as unknown as Statistics); + } + }, + } + )); } private initialize() { this.numberOfChargingStations = 0; this.numberOfChargingStationTemplates = 0; + this.initializeWorkerImplementation(); } private async startChargingStation(