From ec7f4dcea28197007a32308483e8e8f4750fae5e Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Mon, 13 Jun 2022 00:14:13 +0200 Subject: [PATCH] Simplify Bootstrap initialization code MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- src/charging-station/Bootstrap.ts | 52 +++++++++++++++---------------- 1 file changed, 26 insertions(+), 26 deletions(-) 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( -- 2.34.1