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
12 protected chargingStation
: ChargingStation
;
14 protected constructor(chargingStation
: ChargingStation
) {
15 this.chargingStation
= chargingStation
;
18 public static getInstance
<T
extends OCPPIncomingRequestService
>(
19 this: new (chargingStation
: ChargingStation
) => T
,
20 chargingStation
: ChargingStation
22 if (!OCPPIncomingRequestService
.instances
.has(chargingStation
.id
)) {
23 OCPPIncomingRequestService
.instances
.set(chargingStation
.id
, new this(chargingStation
));
25 return OCPPIncomingRequestService
.instances
.get(chargingStation
.id
) as T
;
28 protected handleIncomingRequestError
<T
>(
29 commandName
: IncomingRequestCommand
,
31 params
: HandleErrorParams
<T
> = { throwError
: true }
34 this.chargingStation
.logPrefix() + ' Incoming request command %s error: %j',
38 if (!params
?.throwError
&& params
?.errorResponse
) {
39 return params
?.errorResponse
;
41 if (params
?.throwError
&& !params
?.errorResponse
) {
44 if (params
?.throwError
&& params
?.errorResponse
) {
45 return params
?.errorResponse
;
49 public abstract handleRequest(
51 commandName
: IncomingRequestCommand
,
52 commandPayload
: JsonType