X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FWorkerBroadcastChannel.ts;h=652a27e1831e7fb7f9815745511de6c68a7fe54f;hb=8ec8e3d00ee6b2dca0760dd77973e338ea5a23a7;hp=ea89dc3dbf65f093f0a0bbfacdfdb32aab3c5f62;hpb=852a4c5f07886502e278d44fda06efdfa8c711d8;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/WorkerBroadcastChannel.ts b/src/charging-station/WorkerBroadcastChannel.ts index ea89dc3d..652a27e1 100644 --- a/src/charging-station/WorkerBroadcastChannel.ts +++ b/src/charging-station/WorkerBroadcastChannel.ts @@ -1,11 +1,15 @@ import { BroadcastChannel } from 'worker_threads'; -import BaseError from '../exception/BaseError'; -import { +import type { JsonType } from '../types/JsonType'; +import type { BroadcastChannelRequest, BroadcastChannelResponse, MessageEvent, } from '../types/WorkerBroadcastChannel'; +import logger from '../utils/Logger'; +import Utils from '../utils/Utils'; + +const moduleName = 'WorkerBroadcastChannel'; export default abstract class WorkerBroadcastChannel extends BroadcastChannel { protected constructor() { @@ -20,17 +24,33 @@ export default abstract class WorkerBroadcastChannel extends BroadcastChannel { this.postMessage(response); } - protected isRequest(message: any): boolean { - return Array.isArray(message) && message.length === 3; + protected isRequest(message: JsonType[]): boolean { + return Array.isArray(message) === true && message.length === 3; } - protected isResponse(message: any): boolean { - return Array.isArray(message) && message.length === 2; + protected isResponse(message: JsonType[]): boolean { + return Array.isArray(message) === true && message.length === 2; } - protected validateMessageEvent(messageEvent: MessageEvent): void { + protected validateMessageEvent(messageEvent: MessageEvent): MessageEvent | false { if (Array.isArray(messageEvent.data) === false) { - throw new BaseError('Worker broadcast channel protocol message event data is not an array'); + logger.error( + this.logPrefix(moduleName, 'validateMessageEvent') + + ' Worker broadcast channel protocol message event data is not an array' + ); + return false; + } + if (Utils.validateUUID(messageEvent.data[0]) === false) { + logger.error( + this.logPrefix(moduleName, 'validateMessageEvent') + + ' Worker broadcast channel protocol message event data UUID field is invalid' + ); + return false; } + return messageEvent; + } + + private logPrefix(modName: string, methodName: string): string { + return Utils.logPrefix(` Worker Broadcast Channel | ${modName}.${methodName}:`); } }