Improve payload type checking in OCPP, UI and Broadcast Channel
[e-mobility-charging-stations-simulator.git] / src / charging-station / Bootstrap.ts
index f881c19bfb0c77436dddf8aa39e37bfd3f954fbd..2bc650cc32ec9116f638b33da3eb1d4e4a361d21 100644 (file)
@@ -14,6 +14,7 @@ import {
   ChargingStationData,
   ChargingStationWorkerData,
   ChargingStationWorkerMessage,
+  ChargingStationWorkerMessageData,
   ChargingStationWorkerMessageEvents,
 } from '../types/ChargingStationWorker';
 import { StationTemplateUrl } from '../types/ConfigurationData';
@@ -38,6 +39,7 @@ export default class Bootstrap {
   private readonly storage!: Storage;
   private numberOfChargingStationTemplates!: number;
   private numberOfChargingStations!: number;
+  private numberOfStartedChargingStations!: number;
   private readonly version: string = version;
   private started: boolean;
   private readonly workerScript: string;
@@ -172,14 +174,14 @@ export default class Bootstrap {
             workerChoiceStrategy: Configuration.getWorker().poolStrategy,
           },
           messageHandler: this.messageHandler.bind(this) as (
-            msg: ChargingStationWorkerMessage<ChargingStationData | Statistics>
+            msg: ChargingStationWorkerMessage<ChargingStationWorkerMessageData>
           ) => void,
         }
       ));
   }
 
   private messageHandler(
-    msg: ChargingStationWorkerMessage<ChargingStationData | Statistics>
+    msg: ChargingStationWorkerMessage<ChargingStationWorkerMessageData>
   ): void {
     // logger.debug(
     //   `${this.logPrefix()} ${moduleName}.messageHandler: Worker channel message received: ${JSON.stringify(
@@ -219,12 +221,12 @@ export default class Bootstrap {
 
   private workerEventStarted(data: ChargingStationData) {
     this.uiServer?.chargingStations.set(data.hashId, data);
-    this.started && ++this.numberOfChargingStations;
+    ++this.numberOfStartedChargingStations;
   }
 
   private workerEventStopped(data: ChargingStationData) {
-    this.uiServer?.chargingStations.delete(data.hashId);
-    this.started && --this.numberOfChargingStations;
+    this.uiServer?.chargingStations.set(data.hashId, data);
+    --this.numberOfStartedChargingStations;
   }
 
   private workerEventUpdated(data: ChargingStationData) {
@@ -236,8 +238,9 @@ export default class Bootstrap {
   };
 
   private initialize() {
-    this.numberOfChargingStations = 0;
     this.numberOfChargingStationTemplates = 0;
+    this.numberOfChargingStations = 0;
+    this.numberOfStartedChargingStations = 0;
     this.initializeWorkerImplementation();
   }
 
@@ -255,7 +258,7 @@ export default class Bootstrap {
       ),
     };
     await this.workerImplementation.addElement(workerData);
-    this.numberOfChargingStations++;
+    ++this.numberOfChargingStations;
   }
 
   private logPrefix(): string {