Commit | Line | Data |
---|---|---|
9f2e3130 | 1 | import type ChargingStation from '../ChargingStation'; |
e0a50bcd | 2 | import { HandleErrorParams } from '../../types/Error'; |
c0560973 | 3 | import { IncomingRequestCommand } from '../../types/ocpp/Requests'; |
d1888640 | 4 | import { JsonType } from '../../types/JsonType'; |
9f2e3130 | 5 | import logger from '../../utils/Logger'; |
c0560973 JB |
6 | |
7 | export default abstract class OCPPIncomingRequestService { | |
9f2e3130 | 8 | private static readonly instances: Map<string, OCPPIncomingRequestService> = new Map<string, OCPPIncomingRequestService>(); |
c0560973 JB |
9 | protected chargingStation: ChargingStation; |
10 | ||
9f2e3130 | 11 | protected constructor(chargingStation: ChargingStation) { |
c0560973 JB |
12 | this.chargingStation = chargingStation; |
13 | } | |
14 | ||
9f2e3130 JB |
15 | public static getInstance<T extends OCPPIncomingRequestService>(this: new (chargingStation: ChargingStation) => T, chargingStation: ChargingStation): T { |
16 | if (!OCPPIncomingRequestService.instances.has(chargingStation.id)) { | |
17 | OCPPIncomingRequestService.instances.set(chargingStation.id, new this(chargingStation)); | |
18 | } | |
19 | return OCPPIncomingRequestService.instances.get(chargingStation.id) as T; | |
20 | } | |
21 | ||
717c1e56 | 22 | protected handleIncomingRequestError<T>(commandName: IncomingRequestCommand, error: Error, params: HandleErrorParams<T> = { throwError: true }): T { |
9f2e3130 | 23 | logger.error(this.chargingStation.logPrefix() + ' Incoming request command %s error: %j', commandName, error); |
717c1e56 JB |
24 | if (!params?.throwError && params?.errorResponse) { |
25 | return params?.errorResponse; | |
e64c0923 | 26 | } |
717c1e56 | 27 | if (params?.throwError && !params?.errorResponse) { |
e0a50bcd JB |
28 | throw error; |
29 | } | |
717c1e56 JB |
30 | if (params?.throwError && params?.errorResponse) { |
31 | return params?.errorResponse; | |
32 | } | |
47e22477 JB |
33 | } |
34 | ||
d1888640 | 35 | public abstract handleRequest(messageId: string, commandName: IncomingRequestCommand, commandPayload: JsonType): Promise<void>; |
c0560973 | 36 | } |