UI Protocol: add Authorize command support
[e-mobility-charging-stations-simulator.git] / src / charging-station / ui-server / ui-services / UIService001.ts
index eecdcd34792da1ef2bf6beae1f4cff19595ab704..4be6a2f2b16f1903a78c0941016a65d1ce594eb5 100644 (file)
-import { ProtocolCommand, ProtocolRequestHandler } from '../../../types/UIProtocol';
-
+import {
+  ProcedureName,
+  ProtocolRequestHandler,
+  ProtocolVersion,
+  RequestPayload,
+} from '../../../types/UIProtocol';
+import { BroadcastChannelProcedureName } from '../../../types/WorkerBroadcastChannel';
+import type { AbstractUIServer } from '../AbstractUIServer';
 import AbstractUIService from './AbstractUIService';
-import { JsonType } from '../../../types/JsonType';
-import UIWebSocketServer from '../UIWebSocketServer';
 
 export default class UIService001 extends AbstractUIService {
-  constructor(uiServer: UIWebSocketServer) {
-    super(uiServer);
-    this.messageHandlers.set(
-      ProtocolCommand.START_TRANSACTION,
+  constructor(uiServer: AbstractUIServer) {
+    super(uiServer, ProtocolVersion['0.0.1']);
+    this.requestHandlers.set(
+      ProcedureName.START_CHARGING_STATION,
+      this.handleStartChargingStation.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.STOP_CHARGING_STATION,
+      this.handleStopChargingStation.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.OPEN_CONNECTION,
+      this.handleOpenConnection.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.CLOSE_CONNECTION,
+      this.handleCloseConnection.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.START_TRANSACTION,
       this.handleStartTransaction.bind(this) as ProtocolRequestHandler
     );
-    this.messageHandlers.set(
-      ProtocolCommand.STOP_TRANSACTION,
+    this.requestHandlers.set(
+      ProcedureName.STOP_TRANSACTION,
       this.handleStopTransaction.bind(this) as ProtocolRequestHandler
     );
+    this.requestHandlers.set(
+      ProcedureName.START_AUTOMATIC_TRANSACTION_GENERATOR,
+      this.handleStartAutomaticTransactionGenerator.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR,
+      this.handleStopAutomaticTransactionGenerator.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.AUTHORIZE,
+      this.handleAuthorize.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.STATUS_NOTIFICATION,
+      this.handleStatusNotification.bind(this) as ProtocolRequestHandler
+    );
+    this.requestHandlers.set(
+      ProcedureName.HEARTBEAT,
+      this.handleHeartbeat.bind(this) as ProtocolRequestHandler
+    );
   }
 
-  private handleStartTransaction(payload: JsonType): void {}
-  private handleStopTransaction(payload: JsonType): void {}
+  private handleStartChargingStation(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(
+      uuid,
+      BroadcastChannelProcedureName.START_CHARGING_STATION,
+      payload
+    );
+  }
+
+  private handleStopChargingStation(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(
+      uuid,
+      BroadcastChannelProcedureName.STOP_CHARGING_STATION,
+      payload
+    );
+  }
+
+  private handleOpenConnection(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(uuid, BroadcastChannelProcedureName.OPEN_CONNECTION, payload);
+  }
+
+  private handleCloseConnection(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(uuid, BroadcastChannelProcedureName.CLOSE_CONNECTION, payload);
+  }
+
+  private handleStartTransaction(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(
+      uuid,
+      BroadcastChannelProcedureName.START_TRANSACTION,
+      payload
+    );
+  }
+
+  private handleStopTransaction(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(uuid, BroadcastChannelProcedureName.STOP_TRANSACTION, payload);
+  }
+
+  private handleStartAutomaticTransactionGenerator(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(
+      uuid,
+      BroadcastChannelProcedureName.START_AUTOMATIC_TRANSACTION_GENERATOR,
+      payload
+    );
+  }
+
+  private handleStopAutomaticTransactionGenerator(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(
+      uuid,
+      BroadcastChannelProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR,
+      payload
+    );
+  }
+
+  private handleAuthorize(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(uuid, BroadcastChannelProcedureName.AUTHORIZE, payload);
+  }
+
+  private handleStatusNotification(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(
+      uuid,
+      BroadcastChannelProcedureName.STATUS_NOTIFICATION,
+      payload
+    );
+  }
+
+  private handleHeartbeat(uuid: string, payload: RequestPayload): void {
+    this.sendBroadcastChannelRequest(uuid, BroadcastChannelProcedureName.HEARTBEAT, payload);
+  }
 }