X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Fui-server%2Fui-services%2FAbstractUIService.ts;h=1ec6cf93b20e77363f08ecbb79cb9c10ed9cf656;hb=507a34c154d4877cc261df07b942bcef01b87b4b;hp=49d10abfa21e52b1075624bbf3f462881e6b8063;hpb=268a74bb051fcbbad532fd833f0d8fd2b33b6c64;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ui-server/ui-services/AbstractUIService.ts b/src/charging-station/ui-server/ui-services/AbstractUIService.ts index 49d10abf..1ec6cf93 100644 --- a/src/charging-station/ui-server/ui-services/AbstractUIService.ts +++ b/src/charging-station/ui-server/ui-services/AbstractUIService.ts @@ -1,19 +1,19 @@ import { BaseError, type OCPPError } from '../../../exception'; -import { Bootstrap } from '../../../internal'; import { BroadcastChannelProcedureName, type BroadcastChannelRequestPayload, ProcedureName, type ProtocolRequest, type ProtocolRequestHandler, + type ProtocolResponse, type ProtocolVersion, type RequestPayload, type ResponsePayload, ResponseStatus, } from '../../../types'; -import { logger } from '../../../utils/Logger'; -import { Utils } from '../../../utils/Utils'; -import { UIServiceWorkerBroadcastChannel } from '../../UIServiceWorkerBroadcastChannel'; +import { Utils, logger } from '../../../utils'; +import { Bootstrap } from '../../Bootstrap'; +import { UIServiceWorkerBroadcastChannel } from '../../broadcast-channel/UIServiceWorkerBroadcastChannel'; import type { AbstractUIServer } from '../AbstractUIServer'; const moduleName = 'AbstractUIService'; @@ -33,6 +33,7 @@ export abstract class AbstractUIService { BroadcastChannelProcedureName.START_AUTOMATIC_TRANSACTION_GENERATOR, [ProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR]: BroadcastChannelProcedureName.STOP_AUTOMATIC_TRANSACTION_GENERATOR, + [ProcedureName.SET_SUPERVISION_URL]: BroadcastChannelProcedureName.SET_SUPERVISION_URL, [ProcedureName.START_TRANSACTION]: BroadcastChannelProcedureName.START_TRANSACTION, [ProcedureName.STOP_TRANSACTION]: BroadcastChannelProcedureName.STOP_TRANSACTION, [ProcedureName.AUTHORIZE]: BroadcastChannelProcedureName.AUTHORIZE, @@ -65,11 +66,11 @@ export abstract class AbstractUIService { this.broadcastChannelRequests = new Map(); } - public async requestHandler(request: ProtocolRequest): Promise { + public async requestHandler(request: ProtocolRequest): Promise { let messageId: string; let command: ProcedureName; let requestPayload: RequestPayload | undefined; - let responsePayload: ResponsePayload; + let responsePayload: ResponsePayload | undefined; try { [messageId, command, requestPayload] = request; @@ -87,7 +88,7 @@ export abstract class AbstractUIService { responsePayload = await this.requestHandlers.get(command)(messageId, command, requestPayload); } catch (error) { // Log - logger.error(`${this.logPrefix(moduleName, 'messageHandler')} Handle request error:`, error); + logger.error(`${this.logPrefix(moduleName, 'requestHandler')} Handle request error:`, error); responsePayload = { hashIds: requestPayload?.hashIds, status: ResponseStatus.FAILURE, @@ -98,26 +99,26 @@ export abstract class AbstractUIService { errorStack: (error as Error).stack, errorDetails: (error as OCPPError).details, }; - } finally { - // Send response for payload not forwarded to broadcast channel - if (responsePayload !== undefined) { - this.sendResponse(messageId, responsePayload); - } + } + if (!Utils.isNullOrUndefined(responsePayload)) { + return this.uiServer.buildProtocolResponse(messageId, responsePayload); } } - public sendRequest( - messageId: string, - procedureName: ProcedureName, - requestPayload: RequestPayload - ): void { - this.uiServer.sendRequest( - this.uiServer.buildProtocolRequest(messageId, procedureName, requestPayload) - ); - } + // public sendRequest( + // messageId: string, + // procedureName: ProcedureName, + // requestPayload: RequestPayload + // ): void { + // this.uiServer.sendRequest( + // this.uiServer.buildProtocolRequest(messageId, procedureName, requestPayload) + // ); + // } public sendResponse(messageId: string, responsePayload: ResponsePayload): void { - this.uiServer.sendResponse(this.uiServer.buildProtocolResponse(messageId, responsePayload)); + if (this.uiServer.hasResponseHandler(messageId)) { + this.uiServer.sendResponse(this.uiServer.buildProtocolResponse(messageId, responsePayload)); + } } public logPrefix = (modName: string, methodName: string): string => { @@ -153,6 +154,7 @@ export abstract class AbstractUIService { ): void { if (Utils.isNotEmptyArray(payload.hashIds)) { payload.hashIds = payload.hashIds + .filter((hashId) => !Utils.isNullOrUndefined(hashId)) .map((hashId) => { if (this.uiServer.chargingStations.has(hashId) === true) { return hashId; @@ -163,8 +165,7 @@ export abstract class AbstractUIService { 'sendBroadcastChannelRequest' )} Charging station with hashId '${hashId}' not found` ); - }) - .filter((hashId) => hashId !== undefined); + }); } const expectedNumberOfResponses = Utils.isNotEmptyArray(payload.hashIds) ? payload.hashIds.length