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';
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(
error
);
responsePayload = {
+ hashId: this.chargingStation.hashId,
status: ResponseStatus.FAILURE,
command,
requestPayload,