X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FWorkerBroadcastChannel.ts;h=f3c168bdc8f1057611d1b8768d6d1dde0364c627;hb=e8044a69a745aab08dfeea0bd9ec9dd7fe84cdd7;hp=12a877c12add623365c0c8c6c6068c62841000d2;hpb=6c8f5d901f6dbfd66e921decde63bf73548c156e;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/WorkerBroadcastChannel.ts b/src/charging-station/WorkerBroadcastChannel.ts index 12a877c1..f3c168bd 100644 --- a/src/charging-station/WorkerBroadcastChannel.ts +++ b/src/charging-station/WorkerBroadcastChannel.ts @@ -1,8 +1,16 @@ -import { BroadcastChannel } from 'worker_threads'; +import { BroadcastChannel } from 'node:worker_threads'; -import { BroadcastChannelRequest, BroadcastChannelResponse } from '../types/WorkerBroadcastChannel'; +import type { + BroadcastChannelRequest, + BroadcastChannelResponse, + JsonType, + MessageEvent, +} from '../types'; +import { Utils, logger } from '../utils'; -export default abstract class WorkerBroadcastChannel extends BroadcastChannel { +const moduleName = 'WorkerBroadcastChannel'; + +export abstract class WorkerBroadcastChannel extends BroadcastChannel { protected constructor() { super('worker'); } @@ -15,11 +23,37 @@ 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: JsonType[]): boolean { + return Array.isArray(message) === true && message.length === 2; } - protected isResponse(message: any): boolean { - return Array.isArray(message) && message.length === 2; + protected validateMessageEvent(messageEvent: MessageEvent): MessageEvent | false { + if (Array.isArray(messageEvent.data) === false) { + 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}:`); + }; }