X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Fui-server%2Fui-services%2FAbstractUIService.ts;h=ab2c1167e934dc789537dfb679c4755eb2e0f975;hb=b2b606263e2676354259164d532ff9aa91ccdf87;hp=71b057abe4a2f7369c1376d97ffcc55046eb0e89;hpb=7671fa0be211e944f027ebd83f3a0ad64c2ef2d6;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 71b057ab..ab2c1167 100644 --- a/src/charging-station/ui-server/ui-services/AbstractUIService.ts +++ b/src/charging-station/ui-server/ui-services/AbstractUIService.ts @@ -5,12 +5,13 @@ import { ProcedureName, type ProtocolRequest, type ProtocolRequestHandler, + type ProtocolResponse, type ProtocolVersion, type RequestPayload, type ResponsePayload, ResponseStatus, } from '../../../types'; -import { Utils, logger } from '../../../utils'; +import { isNotEmptyArray, isNullOrUndefined, logger } from '../../../utils'; import { Bootstrap } from '../../Bootstrap'; import { UIServiceWorkerBroadcastChannel } from '../../broadcast-channel/UIServiceWorkerBroadcastChannel'; import type { AbstractUIServer } from '../AbstractUIServer'; @@ -18,7 +19,7 @@ import type { AbstractUIServer } from '../AbstractUIServer'; const moduleName = 'AbstractUIService'; export abstract class AbstractUIService { - protected static readonly ProcedureNameToBroadCastChannelProcedureNameMap: Omit< + protected static readonly ProcedureNameToBroadCastChannelProcedureNameMapping: Omit< Record, | ProcedureName.START_SIMULATOR | ProcedureName.STOP_SIMULATOR @@ -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 (!Utils.isNullOrUndefined(responsePayload)) { - this.sendResponse(messageId, responsePayload); - } + } + if (!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 => { @@ -139,7 +140,7 @@ export abstract class AbstractUIService { ): void { this.sendBroadcastChannelRequest( uuid, - AbstractUIService.ProcedureNameToBroadCastChannelProcedureNameMap[ + AbstractUIService.ProcedureNameToBroadCastChannelProcedureNameMapping[ procedureName ] as BroadcastChannelProcedureName, payload @@ -151,9 +152,9 @@ export abstract class AbstractUIService { procedureName: BroadcastChannelProcedureName, payload: BroadcastChannelRequestPayload ): void { - if (Utils.isNotEmptyArray(payload.hashIds)) { + if (isNotEmptyArray(payload.hashIds)) { payload.hashIds = payload.hashIds - .filter((hashId) => !Utils.isNullOrUndefined(hashId)) + .filter((hashId) => !isNullOrUndefined(hashId)) .map((hashId) => { if (this.uiServer.chargingStations.has(hashId) === true) { return hashId; @@ -166,7 +167,7 @@ export abstract class AbstractUIService { ); }); } - const expectedNumberOfResponses = Utils.isNotEmptyArray(payload.hashIds) + const expectedNumberOfResponses = isNotEmptyArray(payload.hashIds) ? payload.hashIds.length : this.uiServer.chargingStations.size; this.uiServiceWorkerBroadcastChannel.sendRequest([uuid, procedureName, payload]);