import logger from '../../utils/Logger';
export default abstract class OCPPIncomingRequestService {
- private static readonly instances: Map<string, OCPPIncomingRequestService> = new Map<string, OCPPIncomingRequestService>();
- protected chargingStation: ChargingStation;
+ private static instance: OCPPIncomingRequestService | null = null;
- protected constructor(chargingStation: ChargingStation) {
- this.chargingStation = chargingStation;
+ protected constructor() {
+ // This is intentional
}
- public static getInstance<T extends OCPPIncomingRequestService>(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<T extends OCPPIncomingRequestService>(this: new () => T): T {
+ if (!OCPPIncomingRequestService.instance) {
+ OCPPIncomingRequestService.instance = new this();
}
- return OCPPIncomingRequestService.instances.get(chargingStation.id) as T;
+ return OCPPIncomingRequestService.instance as T;
}
- protected handleIncomingRequestError<T>(commandName: IncomingRequestCommand, error: Error, params: HandleErrorParams<T> = { throwError: true }): T {
- logger.error(this.chargingStation.logPrefix() + ' Incoming request command %s error: %j', commandName, error);
+ protected handleIncomingRequestError<T>(
+ chargingStation: ChargingStation,
+ commandName: IncomingRequestCommand,
+ error: Error,
+ params: HandleErrorParams<T> = { throwError: true }
+ ): T {
+ logger.error(
+ chargingStation.logPrefix() + ' Incoming request command %s error: %j',
+ commandName,
+ error
+ );
if (!params?.throwError && params?.errorResponse) {
return params?.errorResponse;
}
}
}
- public abstract handleRequest(messageId: string, commandName: IncomingRequestCommand, commandPayload: JsonType): Promise<void>;
+ public abstract incomingRequestHandler(
+ chargingStation: ChargingStation,
+ messageId: string,
+ commandName: IncomingRequestCommand,
+ commandPayload: JsonType
+ ): Promise<void>;
}