X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2FOCPPRequestService.ts;h=d7757eaa1af230ddb847e20d1298dbf88267c51f;hb=ea32ea059bfdd7134abe2ba349985e5b15bc1d06;hp=f956d381b30109d14c708b06fae9c7637830d7f5;hpb=24d15716245469249b57e5aa790147d703d60a4e;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ocpp/OCPPRequestService.ts b/src/charging-station/ocpp/OCPPRequestService.ts index f956d381..d7757eaa 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 { OCPPServiceUtils } from './OCPPServiceUtils.js' type Ajv = _Ajv.default // eslint-disable-next-line @typescript-eslint/no-redeclare const Ajv = _Ajv.default @@ -47,7 +47,7 @@ export abstract class OCPPRequestService { private readonly version: OCPPVersion private readonly ocppResponseService: OCPPResponseService protected readonly ajv: Ajv - protected abstract jsonSchemasValidateFunction: Map> + protected abstract payloadValidateFunctions: Map> protected constructor (version: OCPPVersion, ocppResponseService: OCPPResponseService) { this.version = version @@ -158,13 +158,13 @@ export abstract class OCPPRequestService { if (chargingStation.stationInfo?.ocppStrictCompliance === false) { return true } - if (!this.jsonSchemasValidateFunction.has(commandName as RequestCommand)) { + if (!this.payloadValidateFunctions.has(commandName as RequestCommand)) { logger.warn( `${chargingStation.logPrefix()} ${moduleName}.validateRequestPayload: No JSON schema found for command '${commandName}' PDU validation` ) return true } - const validate = this.jsonSchemasValidateFunction.get(commandName as RequestCommand) + const validate = this.payloadValidateFunctions.get(commandName as RequestCommand) payload = clone(payload) OCPPServiceUtils.convertDateToISOString(payload) if (validate?.(payload) === true) { @@ -192,7 +192,7 @@ export abstract class OCPPRequestService { return true } if ( - !this.ocppResponseService.jsonSchemasIncomingRequestResponseValidateFunction.has( + !this.ocppResponseService.incomingRequestResponsePayloadValidateFunctions.has( commandName as IncomingRequestCommand ) ) { @@ -201,10 +201,9 @@ export abstract class OCPPRequestService { ) return true } - const validate = - this.ocppResponseService.jsonSchemasIncomingRequestResponseValidateFunction.get( - commandName as IncomingRequestCommand - ) + const validate = this.ocppResponseService.incomingRequestResponsePayloadValidateFunctions.get( + commandName as IncomingRequestCommand + ) payload = clone(payload) OCPPServiceUtils.convertDateToISOString(payload) if (validate?.(payload) === true) { @@ -246,7 +245,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 * @@ -304,11 +303,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, @@ -318,7 +317,7 @@ export abstract class OCPPRequestService { ) } } else if ( - params?.skipBufferingOnError === true && + params.skipBufferingOnError === true && messageType === MessageType.CALL_MESSAGE ) { // Remove request from the cache @@ -347,7 +346,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 @@ -364,7 +363,7 @@ export abstract class OCPPRequestService { )} payload: ${messageToSend}` ) if (messageType === MessageType.CALL_MESSAGE) { - this.cacheRequestPromise( + this.setCachedRequest( chargingStation, messageId, messagePayload as JsonType, @@ -381,7 +380,7 @@ 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 } @@ -394,7 +393,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 @@ -454,7 +453,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 @@ -462,7 +461,7 @@ export abstract class OCPPRequestService { return messageToSend } - private cacheRequestPromise ( + private setCachedRequest ( chargingStation: ChargingStation, messageId: string, messagePayload: JsonType,