- workerChoiceStrategy: Configuration.getWorkerPoolStrategy()
- }
- }, (msg: WorkerMessage) => {
- if (msg.id === WorkerEvents.PERFORMANCE_STATISTICS) {
- Bootstrap.storage.storePerformanceStatistics(msg.data);
- }
- });
+ 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;
+ }
+
+ private async startChargingStation(
+ index: number,
+ stationTemplateUrl: StationTemplateUrl
+ ): Promise<void> {
+ const workerData: ChargingStationWorkerData = {
+ index,
+ templateFile: path.join(
+ path.resolve(__dirname, '../'),
+ 'assets',
+ 'station-templates',
+ path.basename(stationTemplateUrl.file)
+ ),
+ };
+ await this.workerImplementation.addElement(workerData);
+ this.numberOfChargingStations++;