X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2FOCPPRequestService.ts;h=d396f354820d785613b2b677fa44d534f4b34d31;hb=c0bbb3eaf0c5dc704ea92820a2666a68ffdc27ff;hp=17fc548438ac612c6fe6274d12a9d88c338a70fb;hpb=d5490a13c341153af159d4b2ed745d32dc38452f;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ocpp/OCPPRequestService.ts b/src/charging-station/ocpp/OCPPRequestService.ts index 17fc5484..d396f354 100644 --- a/src/charging-station/ocpp/OCPPRequestService.ts +++ b/src/charging-station/ocpp/OCPPRequestService.ts @@ -1,9 +1,6 @@ import _Ajv, { type ValidateFunction } from 'ajv' import _ajvFormats from 'ajv-formats' -import { OCPPConstants } from './OCPPConstants.js' -import type { OCPPResponseService } from './OCPPResponseService.js' -import { OCPPServiceUtils } from './OCPPServiceUtils.js' import type { ChargingStation } from '../../charging-station/index.js' import { OCPPError } from '../../exception/index.js' import { PerformanceStatistics } from '../../performance/index.js' @@ -29,6 +26,9 @@ import { handleSendMessageError, logger } from '../../utils/index.js' +import { OCPPConstants } from './OCPPConstants.js' +import type { OCPPResponseService } from './OCPPResponseService.js' +import { getMessageTypeString, OCPPServiceUtils } from './OCPPServiceUtils.js' type Ajv = _Ajv.default // eslint-disable-next-line @typescript-eslint/no-redeclare const Ajv = _Ajv.default @@ -94,9 +94,15 @@ export abstract class OCPPRequestService { commandName ) } catch (error) { - handleSendMessageError(chargingStation, commandName, error as Error, { - throwError: true - }) + handleSendMessageError( + chargingStation, + commandName, + MessageType.CALL_RESULT_MESSAGE, + error as Error, + { + throwError: true + } + ) return null } } @@ -117,7 +123,12 @@ export abstract class OCPPRequestService { commandName ) } catch (error) { - handleSendMessageError(chargingStation, commandName, error as Error) + handleSendMessageError( + chargingStation, + commandName, + MessageType.CALL_ERROR_MESSAGE, + error as Error + ) return null } } @@ -143,9 +154,15 @@ export abstract class OCPPRequestService { params ) } catch (error) { - handleSendMessageError(chargingStation, commandName, error as Error, { - throwError: params.throwError - }) + handleSendMessageError( + chargingStation, + commandName, + MessageType.CALL_MESSAGE, + error as Error, + { + throwError: params.throwError + } + ) return null } } @@ -245,7 +262,7 @@ export abstract class OCPPRequestService { // eslint-disable-next-line @typescript-eslint/no-this-alias const self = this // Send a message through wsConnection - return await new Promise((resolve, reject) => { + return await new Promise((resolve, reject: (reason?: unknown) => void) => { /** * Function that will receive the request's response * @@ -291,7 +308,7 @@ export abstract class OCPPRequestService { ) } logger.error( - `${chargingStation.logPrefix()} Error occurred at ${OCPPServiceUtils.getMessageTypeString( + `${chargingStation.logPrefix()} Error occurred at ${getMessageTypeString( messageType )} command ${commandName} with PDU %j:`, messagePayload, @@ -303,11 +320,11 @@ export abstract class OCPPRequestService { } const handleSendError = (ocppError: OCPPError): void => { - if (params?.skipBufferingOnError === false) { + if (params.skipBufferingOnError === false) { // Buffer chargingStation.bufferMessage(messageToSend) if (messageType === MessageType.CALL_MESSAGE) { - this.cacheRequestPromise( + this.setCachedRequest( chargingStation, messageId, messagePayload as JsonType, @@ -317,7 +334,7 @@ export abstract class OCPPRequestService { ) } } else if ( - params?.skipBufferingOnError === true && + params.skipBufferingOnError === true && messageType === MessageType.CALL_MESSAGE ) { // Remove request from the cache @@ -346,7 +363,7 @@ export abstract class OCPPRequestService { `Timeout ${formatDurationMilliSeconds( OCPPConstants.OCPP_WEBSOCKET_TIMEOUT )} reached for ${ - params?.skipBufferingOnError === false ? '' : 'non ' + params.skipBufferingOnError === false ? '' : 'non ' }buffered message id '${messageId}' with content '${messageToSend}'`, commandName, (messagePayload as OCPPError).details @@ -358,12 +375,12 @@ export abstract class OCPPRequestService { clearTimeout(sendTimeout) if (error == null) { logger.debug( - `${chargingStation.logPrefix()} >> Command '${commandName}' sent ${OCPPServiceUtils.getMessageTypeString( + `${chargingStation.logPrefix()} >> Command '${commandName}' sent ${getMessageTypeString( messageType )} payload: ${messageToSend}` ) if (messageType === MessageType.CALL_MESSAGE) { - this.cacheRequestPromise( + this.setCachedRequest( chargingStation, messageId, messagePayload as JsonType, @@ -380,10 +397,14 @@ export abstract class OCPPRequestService { new OCPPError( ErrorType.GENERIC_ERROR, `WebSocket errored for ${ - params?.skipBufferingOnError === false ? '' : 'non ' + params.skipBufferingOnError === false ? '' : 'non ' }buffered message id '${messageId}' with content '${messageToSend}'`, commandName, - { name: error.name, message: error.message, stack: error.stack } + { + name: error.name, + message: error.message, + stack: error.stack + } ) ) } @@ -393,7 +414,7 @@ export abstract class OCPPRequestService { new OCPPError( ErrorType.GENERIC_ERROR, `WebSocket closed for ${ - params?.skipBufferingOnError === false ? '' : 'non ' + params.skipBufferingOnError === false ? '' : 'non ' }buffered message id '${messageId}' with content '${messageToSend}'`, commandName, (messagePayload as OCPPError).details @@ -453,7 +474,7 @@ export abstract class OCPPRequestService { (messagePayload as OCPPError).code, (messagePayload as OCPPError).message, (messagePayload as OCPPError).details ?? { - command: (messagePayload as OCPPError).command ?? commandName + command: (messagePayload as OCPPError).command } ] satisfies ErrorResponse) break @@ -461,7 +482,7 @@ export abstract class OCPPRequestService { return messageToSend } - private cacheRequestPromise ( + private setCachedRequest ( chargingStation: ChargingStation, messageId: string, messagePayload: JsonType, @@ -477,12 +498,10 @@ export abstract class OCPPRequestService { ]) } - // eslint-disable-next-line @typescript-eslint/no-unused-vars public abstract requestHandler( chargingStation: ChargingStation, commandName: RequestCommand, - // FIXME: should be ReqType - commandParams?: JsonType, + commandParams?: ReqType, params?: RequestParams ): Promise }