Move message buffer code to charging station.
authorJérôme Benoit <jerome.benoit@sap.com>
Tue, 2 Feb 2021 08:10:19 +0000 (09:10 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Tue, 2 Feb 2021 08:10:19 +0000 (09:10 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/charging-station/ChargingStation.ts
src/charging-station/ocpp/OCPPRequestService.ts

index efedd1016fa57127ccf5d2ba71147fc975e7082a..4f19f2d9581c810fbb1a25a7e2609d32381a08a3 100644 (file)
@@ -319,6 +319,22 @@ export default class ChargingStation {
     }
   }
 
+  public addMessageToBuffer(message: string): void {
+    let dups = false;
+    // Handle dups in buffer
+    for (const bufferedMessage of this.messageQueue) {
+      // Same message
+      if (message === bufferedMessage) {
+        dups = true;
+        break;
+      }
+    }
+    if (!dups) {
+      // Buffer message
+      this.messageQueue.push(message);
+    }
+  }
+
   private getChargingStationId(stationTemplate: ChargingStationTemplate): string {
     // In case of multiple instances: add instance index to charging station id
     let instanceIndex = process.env.CF_INSTANCE_INDEX ? process.env.CF_INSTANCE_INDEX : 0;
index 8924882286e404de0d14bab0070ffb6424f0e0e5..6b19d06186a4bfd8c4b82d40d6aaaf5afe526fd9 100644 (file)
@@ -55,19 +55,8 @@ export default abstract class OCPPRequestService {
         // Yes: Send Message
         this.chargingStation.wsConnection.send(messageToSend);
       } else if (commandName !== RequestCommand.BOOT_NOTIFICATION) {
-        let dups = false;
-        // Handle dups in buffer
-        for (const message of this.chargingStation.messageQueue) {
-          // Same message
-          if (messageToSend === message) {
-            dups = true;
-            break;
-          }
-        }
-        if (!dups) {
-          // Buffer message
-          this.chargingStation.messageQueue.push(messageToSend);
-        }
+        // Buffer it
+        this.chargingStation.addMessageToBuffer(messageToSend);
         // Reject it
         return rejectCallback(new OCPPError(commandParams.code ? commandParams.code : ErrorType.GENERIC_ERROR, commandParams.message ? commandParams.message : `WebSocket closed for message id '${messageId}' with content '${messageToSend}', message buffered`, commandParams.details ? commandParams.details : {}));
       }