1 import type ChargingStation from
'../ChargingStation';
2 import { HandleErrorParams
} from
'../../types/Error';
3 import { IncomingRequestCommand
} from
'../../types/ocpp/Requests';
4 import { JsonType
} from
'../../types/JsonType';
5 import logger from
'../../utils/Logger';
7 export default abstract class OCPPIncomingRequestService
{
8 private static readonly instances
: Map
<string, OCPPIncomingRequestService
> = new Map
<
10 OCPPIncomingRequestService
13 protected chargingStation
: ChargingStation
;
15 protected constructor(chargingStation
: ChargingStation
) {
16 this.chargingStation
= chargingStation
;
19 public static getInstance
<T
extends OCPPIncomingRequestService
>(
20 this: new (chargingStation
: ChargingStation
) => T
,
21 chargingStation
: ChargingStation
23 if (!OCPPIncomingRequestService
.instances
.has(chargingStation
.hashId
)) {
24 OCPPIncomingRequestService
.instances
.set(chargingStation
.hashId
, new this(chargingStation
));
26 return OCPPIncomingRequestService
.instances
.get(chargingStation
.hashId
) as T
;
29 protected handleIncomingRequestError
<T
>(
30 commandName
: IncomingRequestCommand
,
32 params
: HandleErrorParams
<T
> = { throwError
: true }
35 this.chargingStation
.logPrefix() + ' Incoming request command %s error: %j',
39 if (!params
?.throwError
&& params
?.errorResponse
) {
40 return params
?.errorResponse
;
42 if (params
?.throwError
&& !params
?.errorResponse
) {
45 if (params
?.throwError
&& params
?.errorResponse
) {
46 return params
?.errorResponse
;
50 public abstract incomingRequestHandler(
52 commandName
: IncomingRequestCommand
,
53 commandPayload
: JsonType