X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2FOCPPRequestService.ts;h=b29c0451a968d916dae04f87abe2bf17427cbcff;hb=e58068fde9b27e3de6733be24fc7b3dfac37331b;hp=2076a2964a061b3c4767208d973e872cf0558d97;hpb=a4bc29426a2f56c987ec161d86baf9a83c0398ca;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ocpp/OCPPRequestService.ts b/src/charging-station/ocpp/OCPPRequestService.ts index 2076a296..b29c0451 100644 --- a/src/charging-station/ocpp/OCPPRequestService.ts +++ b/src/charging-station/ocpp/OCPPRequestService.ts @@ -9,7 +9,7 @@ import Constants from '../../utils/Constants'; import { ErrorType } from '../../types/ocpp/ErrorType'; import { MessageType } from '../../types/ocpp/MessageType'; import { MeterValue } from '../../types/ocpp/MeterValues'; -import OCPPError from './OCPPError'; +import OCPPError from '../../exception/OCPPError'; import OCPPResponseService from './OCPPResponseService'; import PerformanceStatistics from '../../performance/PerformanceStatistics'; import Utils from '../../utils/Utils'; @@ -24,13 +24,13 @@ export default abstract class OCPPRequestService { this.ocppResponseService = ocppResponseService; } - public async sendMessage(messageId: string, commandParams: any, messageType: MessageType, commandName: RequestCommand | IncomingRequestCommand, + public async sendMessage(messageId: string, messageData: any, messageType: MessageType, commandName: RequestCommand | IncomingRequestCommand, skipBufferingOnError = false): Promise { // eslint-disable-next-line @typescript-eslint/no-this-alias const self = this; // Send a message through wsConnection return Utils.promiseWithTimeout(new Promise((resolve, reject) => { - const messageToSend = this.buildMessageToSend(messageId, commandParams, messageType, commandName, responseCallback, rejectCallback); + const messageToSend = this.buildMessageToSend(messageId, messageData, messageType, commandName, responseCallback, rejectCallback); if (this.chargingStation.getEnableStatistics()) { this.chargingStation.performanceStatistics.addRequestStatistic(commandName, messageType); } @@ -44,7 +44,7 @@ export default abstract class OCPPRequestService { } else if (!skipBufferingOnError) { // Buffer it this.chargingStation.bufferMessage(messageToSend); - const ocppError = new OCPPError(ErrorType.GENERIC_ERROR, `WebSocket closed for buffered message id '${messageId}' with content '${messageToSend}'`, commandParams?.details ?? {}); + const ocppError = new OCPPError(ErrorType.GENERIC_ERROR, `WebSocket closed for buffered message id '${messageId}' with content '${messageToSend}'`, messageData?.details ?? {}); if (messageType === MessageType.CALL_MESSAGE) { // Reject it but keep the request in the cache return reject(ocppError); @@ -52,12 +52,12 @@ export default abstract class OCPPRequestService { return rejectCallback(ocppError, false); } else { // Reject it - return rejectCallback(new OCPPError(ErrorType.GENERIC_ERROR, `WebSocket closed for non buffered message id '${messageId}' with content '${messageToSend}'`, commandParams?.details ?? {}), false); + return rejectCallback(new OCPPError(ErrorType.GENERIC_ERROR, `WebSocket closed for non buffered message id '${messageId}' with content '${messageToSend}'`, messageData?.details ?? {}), false); } // Response? if (messageType !== MessageType.CALL_MESSAGE) { // Yes: send Ok - return resolve(commandParams); + return resolve(messageData); } /** @@ -92,11 +92,11 @@ export default abstract class OCPPRequestService { if (requestStatistic && self.chargingStation.getEnableStatistics()) { self.chargingStation.performanceStatistics.addRequestStatistic(commandName, MessageType.CALL_ERROR_MESSAGE); } - logger.error(`${self.chargingStation.logPrefix()} Error %j occurred when calling command %s with parameters %j`, error, commandName, commandParams); + logger.error(`${self.chargingStation.logPrefix()} Error %j occurred when calling command %s with message data %j`, error, commandName, messageData); self.chargingStation.requests.delete(messageId); reject(error); } - }), Constants.OCPP_WEBSOCKET_TIMEOUT, new OCPPError(ErrorType.GENERIC_ERROR, `Timeout for message id '${messageId}'`, commandParams?.details ?? {}), () => { + }), Constants.OCPP_WEBSOCKET_TIMEOUT, new OCPPError(ErrorType.GENERIC_ERROR, `Timeout for message id '${messageId}'`, messageData?.details ?? {}), () => { messageType === MessageType.CALL_MESSAGE && this.chargingStation.requests.delete(messageId); }); } @@ -106,7 +106,7 @@ export default abstract class OCPPRequestService { throw error; } - private buildMessageToSend(messageId: string, commandParams: Record, messageType: MessageType, commandName: RequestCommand | IncomingRequestCommand, + private buildMessageToSend(messageId: string, messageData: Record, messageType: MessageType, commandName: RequestCommand | IncomingRequestCommand, responseCallback: (payload: Record | string, requestPayload: Record) => Promise, rejectCallback: (error: OCPPError, requestStatistic?: boolean) => void): string { let messageToSend: string; @@ -115,18 +115,18 @@ export default abstract class OCPPRequestService { // Request case MessageType.CALL_MESSAGE: // Build request - this.chargingStation.requests.set(messageId, [responseCallback, rejectCallback, commandName, commandParams]); - messageToSend = JSON.stringify([messageType, messageId, commandName, commandParams]); + this.chargingStation.requests.set(messageId, [responseCallback, rejectCallback, commandName, messageData]); + messageToSend = JSON.stringify([messageType, messageId, commandName, messageData]); break; // Response case MessageType.CALL_RESULT_MESSAGE: // Build response - messageToSend = JSON.stringify([messageType, messageId, commandParams]); + messageToSend = JSON.stringify([messageType, messageId, messageData]); break; // Error Message case MessageType.CALL_ERROR_MESSAGE: // Build Error Message - messageToSend = JSON.stringify([messageType, messageId, commandParams?.code ?? ErrorType.GENERIC_ERROR, commandParams?.message ?? '', commandParams?.details ?? {}]); + messageToSend = JSON.stringify([messageType, messageId, messageData?.code ?? ErrorType.GENERIC_ERROR, messageData?.message ?? '', messageData?.details ?? {}]); break; } return messageToSend; @@ -142,5 +142,6 @@ export default abstract class OCPPRequestService { public abstract sendTransactionBeginMeterValues(connectorId: number, transactionId: number, beginMeterValue: MeterValue): Promise; public abstract sendTransactionEndMeterValues(connectorId: number, transactionId: number, endMeterValue: MeterValue): Promise; public abstract sendDiagnosticsStatusNotification(diagnosticsStatus: DiagnosticsStatus): Promise; + public abstract sendResult(messageId: string, resultMessageData: Record, commandName: RequestCommand | IncomingRequestCommand): Promise; public abstract sendError(messageId: string, error: OCPPError, commandName: RequestCommand | IncomingRequestCommand): Promise; }