+ this.requestHandler.bind(this);
+ this.sendResponse.bind(this);
+ this.sendError.bind(this);
+ }
+
+ public static getInstance<T extends OCPPRequestService>(
+ this: new (ocppResponseService: OCPPResponseService) => T,
+ ocppResponseService: OCPPResponseService
+ ): T {
+ if (!OCPPRequestService.instance) {
+ OCPPRequestService.instance = new this(ocppResponseService);
+ }
+ return OCPPRequestService.instance as T;
+ }
+
+ public async sendResponse(
+ chargingStation: ChargingStation,
+ messageId: string,
+ messagePayload: JsonType,
+ commandName: IncomingRequestCommand
+ ): Promise<ResponseType> {
+ try {
+ // Send response message
+ return await this.internalSendMessage(
+ chargingStation,
+ messageId,
+ messagePayload,
+ MessageType.CALL_RESULT_MESSAGE,
+ commandName
+ );
+ } catch (error) {
+ this.handleRequestError(chargingStation, commandName, error as Error);
+ }
+ }
+
+ public async sendError(
+ chargingStation: ChargingStation,
+ messageId: string,
+ ocppError: OCPPError,
+ commandName: RequestCommand | IncomingRequestCommand
+ ): Promise<ResponseType> {
+ try {
+ // Send error message
+ return await this.internalSendMessage(
+ chargingStation,
+ messageId,
+ ocppError,
+ MessageType.CALL_ERROR_MESSAGE,
+ commandName
+ );
+ } catch (error) {
+ this.handleRequestError(chargingStation, commandName, error as Error);
+ }