X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2FOCPPIncomingRequestService.ts;h=8d34e734a19ad67f256752d80f958a22c1734cfa;hb=9b75e3ab59b911697ad2f809e2aee6967a46e0c4;hp=a56437f951e7a9999683584a0c4eaed6df7a230b;hpb=e0a50bcd7ae5a1b4ce22e39935f96a8f7e1222b4;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ocpp/OCPPIncomingRequestService.ts b/src/charging-station/ocpp/OCPPIncomingRequestService.ts index a56437f9..8d34e734 100644 --- a/src/charging-station/ocpp/OCPPIncomingRequestService.ts +++ b/src/charging-station/ocpp/OCPPIncomingRequestService.ts @@ -5,29 +5,51 @@ import { JsonType } from '../../types/JsonType'; import logger from '../../utils/Logger'; export default abstract class OCPPIncomingRequestService { - private static readonly instances: Map = new Map(); + private static readonly instances: Map = new Map< + string, + OCPPIncomingRequestService + >(); + protected chargingStation: ChargingStation; protected constructor(chargingStation: ChargingStation) { this.chargingStation = chargingStation; } - public static getInstance(this: new (chargingStation: ChargingStation) => T, chargingStation: ChargingStation): T { - if (!OCPPIncomingRequestService.instances.has(chargingStation.id)) { - OCPPIncomingRequestService.instances.set(chargingStation.id, new this(chargingStation)); + public static getInstance( + this: new (chargingStation: ChargingStation) => T, + chargingStation: ChargingStation + ): T { + if (!OCPPIncomingRequestService.instances.has(chargingStation.hashId)) { + OCPPIncomingRequestService.instances.set(chargingStation.hashId, new this(chargingStation)); } - return OCPPIncomingRequestService.instances.get(chargingStation.id) as T; + return OCPPIncomingRequestService.instances.get(chargingStation.hashId) as T; } - protected handleIncomingRequestError(commandName: IncomingRequestCommand, error: Error, errorOcppResponse?: T, params: HandleErrorParams = { throwError: true }): T { - logger.error(this.chargingStation.logPrefix() + ' Incoming request command %s error: %j', commandName, error); - if (errorOcppResponse) { - return errorOcppResponse; + protected handleIncomingRequestError( + commandName: IncomingRequestCommand, + error: Error, + params: HandleErrorParams = { throwError: true } + ): T { + logger.error( + this.chargingStation.logPrefix() + ' Incoming request command %s error: %j', + commandName, + error + ); + if (!params?.throwError && params?.errorResponse) { + return params?.errorResponse; } - if (params?.throwError) { + if (params?.throwError && !params?.errorResponse) { throw error; } + if (params?.throwError && params?.errorResponse) { + return params?.errorResponse; + } } - public abstract handleRequest(messageId: string, commandName: IncomingRequestCommand, commandPayload: JsonType): Promise; + public abstract handleRequest( + messageId: string, + commandName: IncomingRequestCommand, + commandPayload: JsonType + ): Promise; }