Cleanups to message queue handling code.
authorJérôme Benoit <jerome.benoit@sap.com>
Sat, 6 Feb 2021 12:47:37 +0000 (13:47 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Sat, 6 Feb 2021 12:47:37 +0000 (13:47 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/charging-station/ChargingStation.ts
src/charging-station/ocpp/OCPPRequestService.ts

index f60fc79ecdd5d98f4f6d5ccb4399a6f9897af45c..0c39613beefea49afdb1a3701457daba98fa12ee 100644 (file)
@@ -319,7 +319,7 @@ export default class ChargingStation {
     }
   }
 
-  public addMessageToBuffer(message: string): void {
+  public addToMessageQueue(message: string): void {
     let dups = false;
     // Handle dups in buffer
     for (const bufferedMessage of this.messageQueue) {
@@ -335,6 +335,15 @@ export default class ChargingStation {
     }
   }
 
+  private flushMessageQueue() {
+    if (!Utils.isEmptyArray(this.messageQueue)) {
+      this.messageQueue.forEach((message, index) => {
+        this.messageQueue.splice(index, 1);
+        this.wsConnection.send(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;
@@ -481,12 +490,7 @@ export default class ChargingStation {
       await this.startMessageSequence();
       this.hasStopped && (this.hasStopped = false);
       if (this.hasSocketRestarted && this.isWebSocketOpen()) {
-        if (!Utils.isEmptyArray(this.messageQueue)) {
-          this.messageQueue.forEach((message, index) => {
-            this.messageQueue.splice(index, 1);
-            this.wsConnection.send(message);
-          });
-        }
+        this.flushMessageQueue();
       }
     } else {
       logger.error(`${this.logPrefix()} Registration failure: max retries reached (${this.getRegistrationMaxRetries()}) or retry disabled (${this.getRegistrationMaxRetries()})`);
index 6ebb4e3841bc1b57c914fc890b1cc2f911d0cc07..a81974adf3ea527cbf34fdadd4ac28dfc8d054ad 100644 (file)
@@ -55,7 +55,7 @@ export default abstract class OCPPRequestService {
         this.chargingStation.wsConnection.send(messageToSend);
       } else if (commandName !== RequestCommand.BOOT_NOTIFICATION) {
         // Buffer it
-        this.chargingStation.addMessageToBuffer(messageToSend);
+        this.chargingStation.addToMessageQueue(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 : {}));
       }