X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FBootstrap.ts;h=37fe0e6b5ae7c5506df07f5d17b94af3b37abfcf;hb=8cc482a9324a0989516b6eb6db85a16258c4b4d1;hp=2c5d6a7d532b7f7d1eefabd17d8e8923b0c8e08f;hpb=5d0498291974ec3a130ba4b1c4663d13d16992c5;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/Bootstrap.ts b/src/charging-station/Bootstrap.ts index 2c5d6a7d..37fe0e6b 100644 --- a/src/charging-station/Bootstrap.ts +++ b/src/charging-station/Bootstrap.ts @@ -82,21 +82,19 @@ export class Bootstrap extends EventEmitter { dirname(fileURLToPath(import.meta.url)), `ChargingStationWorker${extname(fileURLToPath(import.meta.url))}`, ); - Configuration.getConfigurationSection(ConfigurationSection.uiServer) - .enabled === true && - (this.uiServer = UIServerFactory.getUIServerImplementation( - Configuration.getConfigurationSection(ConfigurationSection.uiServer), - )); - Configuration.getConfigurationSection( - ConfigurationSection.performanceStorage, - ).enabled === true && + const uiServerConfiguration = Configuration.getConfigurationSection( + ConfigurationSection.uiServer, + ); + uiServerConfiguration.enabled === true && + (this.uiServer = UIServerFactory.getUIServerImplementation(uiServerConfiguration)); + const performanceStorageConfiguration = + Configuration.getConfigurationSection( + ConfigurationSection.performanceStorage, + ); + performanceStorageConfiguration.enabled === true && (this.storage = StorageFactory.getStorage( - Configuration.getConfigurationSection( - ConfigurationSection.performanceStorage, - ).type!, - Configuration.getConfigurationSection( - ConfigurationSection.performanceStorage, - ).uri!, + performanceStorageConfiguration.type!, + performanceStorageConfiguration.uri!, this.logPrefix(), )); Configuration.setConfigurationChangeCallback(async () => Bootstrap.getInstance().restart()); @@ -117,7 +115,10 @@ export class Bootstrap extends EventEmitter { if (this.starting === false) { this.starting = true; this.initializeCounters(); - this.initializeWorkerImplementation(); + const workerConfiguration = Configuration.getConfigurationSection( + ConfigurationSection.worker, + ); + this.initializeWorkerImplementation(workerConfiguration); await this.workerImplementation?.start(); await this.storage?.open(); this.uiServer?.start(); @@ -143,21 +144,13 @@ export class Bootstrap extends EventEmitter { this.version } started with ${this.numberOfChargingStations.toString()} charging station(s) from ${this.numberOfChargingStationTemplates.toString()} configured charging station template(s) and ${ Configuration.workerDynamicPoolInUse() - ? `${Configuration.getConfigurationSection( - ConfigurationSection.worker, - ).poolMinSize?.toString()}/` + ? `${workerConfiguration.poolMinSize?.toString()}/` : '' }${this.workerImplementation?.size}${ Configuration.workerPoolInUse() - ? `/${Configuration.getConfigurationSection( - ConfigurationSection.worker, - ).poolMaxSize?.toString()}` + ? `/${workerConfiguration.poolMaxSize?.toString()}` : '' - } worker(s) concurrently running in '${ - Configuration.getConfigurationSection( - ConfigurationSection.worker, - ).processType - }' mode${ + } worker(s) concurrently running in '${workerConfiguration.processType}' mode${ !isNullOrUndefined(this.workerImplementation?.maxElementsPerWorker) ? ` (${this.workerImplementation?.maxElementsPerWorker} charging station(s) per worker)` : '' @@ -232,12 +225,9 @@ export class Bootstrap extends EventEmitter { await this.start(); } - private initializeWorkerImplementation(): void { + private initializeWorkerImplementation(workerConfiguration: WorkerConfiguration): void { let elementsPerWorker: number | undefined; - if ( - Configuration.getConfigurationSection(ConfigurationSection.worker) - ?.elementsPerWorker === 'auto' - ) { + if (workerConfiguration?.elementsPerWorker === 'auto') { elementsPerWorker = this.numberOfChargingStations > availableParallelism() ? Math.round(this.numberOfChargingStations / availableParallelism()) @@ -246,25 +236,13 @@ export class Bootstrap extends EventEmitter { this.workerImplementation === null && (this.workerImplementation = WorkerFactory.getWorkerImplementation( this.workerScript, - Configuration.getConfigurationSection(ConfigurationSection.worker) - .processType!, + workerConfiguration.processType!, { - workerStartDelay: Configuration.getConfigurationSection( - ConfigurationSection.worker, - ).startDelay, - elementStartDelay: Configuration.getConfigurationSection( - ConfigurationSection.worker, - ).elementStartDelay, - poolMaxSize: Configuration.getConfigurationSection( - ConfigurationSection.worker, - ).poolMaxSize!, - poolMinSize: Configuration.getConfigurationSection( - ConfigurationSection.worker, - ).poolMinSize!, - elementsPerWorker: - elementsPerWorker ?? - (Configuration.getConfigurationSection(ConfigurationSection.worker) - .elementsPerWorker as number), + workerStartDelay: workerConfiguration.startDelay, + elementStartDelay: workerConfiguration.elementStartDelay, + poolMaxSize: workerConfiguration.poolMaxSize!, + poolMinSize: workerConfiguration.poolMinSize!, + elementsPerWorker: elementsPerWorker ?? (workerConfiguration.elementsPerWorker as number), poolOptions: { messageHandler: this.messageHandler.bind(this) as (message: unknown) => void, }, @@ -282,8 +260,11 @@ export class Bootstrap extends EventEmitter { // 2, // )}`, // ); + if (isNullOrUndefined(msg?.event)) { + return; + } try { - switch (msg.id) { + switch (msg.event) { case ChargingStationWorkerMessageEvents.started: this.workerEventStarted(msg.data as ChargingStationData); this.emit(ChargingStationWorkerMessageEvents.started, msg.data as ChargingStationData); @@ -305,13 +286,13 @@ export class Bootstrap extends EventEmitter { break; default: throw new BaseError( - `Unknown event type: '${msg.id}' for data: ${JSON.stringify(msg.data, null, 2)}`, + `Unknown event type: '${msg.event}' for data: ${JSON.stringify(msg.data, null, 2)}`, ); } } catch (error) { logger.error( `${this.logPrefix()} ${moduleName}.messageHandler: Error occurred while handling '${ - msg.id + msg.event }' event:`, error, );