X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FChargingStationWorkerBroadcastChannel.ts;h=6fd226fa326632d42ef251ae4e59707207c9590f;hb=bbc6c09253da8c84496ef229c27c404a1d69ebfb;hp=9e88b4189372eaa030de37cfe159e4cdb3a89044;hpb=ce7a4fc3afcffe3f14f1cdf88b6af24750cf5910;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ChargingStationWorkerBroadcastChannel.ts b/src/charging-station/ChargingStationWorkerBroadcastChannel.ts index 9e88b418..6fd226fa 100644 --- a/src/charging-station/ChargingStationWorkerBroadcastChannel.ts +++ b/src/charging-station/ChargingStationWorkerBroadcastChannel.ts @@ -15,7 +15,7 @@ import { BroadcastChannelResponsePayload, MessageEvent, } from '../types/WorkerBroadcastChannel'; -import { ResponseStatus } from '../ui/web/src/type/UIProtocol'; +import { ResponseStatus } from '../ui/web/src/types/UIProtocol'; import logger from '../utils/Logger'; import type ChargingStation from './ChargingStation'; import WorkerBroadcastChannel from './WorkerBroadcastChannel'; @@ -38,24 +38,42 @@ export default class ChargingStationWorkerBroadcastChannel extends WorkerBroadca if (this.isResponse(messageEvent.data)) { return; } - if (Array.isArray(messageEvent.data) === false) { - throw new BaseError('Worker broadcast channel protocol request is not an array'); - } + this.validateMessageEvent(messageEvent); const [uuid, command, requestPayload] = messageEvent.data as BroadcastChannelRequest; - if (requestPayload?.hashId !== this.chargingStation.hashId) { + if ( + requestPayload?.hashId === undefined && + (requestPayload?.hashIds as string[])?.includes(this.chargingStation.hashId) === false + ) { + return; + } + if ( + requestPayload?.hashIds === undefined && + requestPayload?.hashId !== this.chargingStation.hashId + ) { return; } + if (requestPayload?.hashId !== undefined) { + logger.warn( + `${this.chargingStation.logPrefix()} ${moduleName}.requestHandler: 'hashId' field usage in PDU is deprecated, use 'hashIds' instead` + ); + } let responsePayload: BroadcastChannelResponsePayload; let commandResponse: CommandResponse; try { commandResponse = await this.commandHandler(command, requestPayload); if (commandResponse === undefined) { - responsePayload = { status: ResponseStatus.SUCCESS }; + responsePayload = { + hashId: this.chargingStation.hashId, + status: ResponseStatus.SUCCESS, + }; } else { - responsePayload = { status: this.commandResponseToResponseStatus(commandResponse) }; + responsePayload = { + hashId: this.chargingStation.hashId, + status: this.commandResponseToResponseStatus(commandResponse), + }; } } catch (error) { logger.error( @@ -63,6 +81,7 @@ export default class ChargingStationWorkerBroadcastChannel extends WorkerBroadca error ); responsePayload = { + hashId: this.chargingStation.hashId, status: ResponseStatus.FAILURE, command, requestPayload,