From: Jérôme Benoit Date: Mon, 18 Aug 2025 19:10:11 +0000 (+0200) Subject: refactor: cleanup charging station worker code X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=6f24be2ae6c1a9f58b8eee10db7b8ea92331f868;p=e-mobility-charging-stations-simulator.git refactor: cleanup charging station worker code Signed-off-by: Jérôme Benoit --- diff --git a/src/charging-station/ChargingStationWorker.ts b/src/charging-station/ChargingStationWorker.ts index b8ec0afc..fd9717c4 100644 --- a/src/charging-station/ChargingStationWorker.ts +++ b/src/charging-station/ChargingStationWorker.ts @@ -16,8 +16,10 @@ if (Configuration.workerPoolInUse()) { ChargingStationWorkerData, ChargingStationInfo | undefined >((data?: ChargingStationWorkerData): ChargingStationInfo | undefined => { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const { index, options, templateFile } = data! + if (data == null) { + throw new BaseError('Invalid charging station worker data') + } + const { index, options, templateFile } = data return new ChargingStation(index, templateFile, options).stationInfo }) } else { @@ -27,43 +29,58 @@ if (Configuration.workerPoolInUse()) { parentPort?.on('message', (message: WorkerMessage) => { const { data, event, uuid } = message // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (uuid != null) { - switch (event) { - case WorkerMessageEvents.addWorkerElement: - try { - const chargingStation = new ChargingStation( - data.index, - data.templateFile, - data.options - ) - parentPort?.postMessage({ - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - data: chargingStation.stationInfo!, - event: WorkerMessageEvents.addedWorkerElement, - uuid, - } satisfies WorkerMessage) - } catch (error) { - parentPort?.postMessage({ - data: { - event, - message: (error as Error).message, - name: (error as Error).name, - stack: (error as Error).stack, - }, - event: WorkerMessageEvents.workerElementError, - uuid, - } satisfies WorkerMessage) - } - break - default: - throw new BaseError( - `Unknown worker message event: '${event}' received with data: '${JSON.stringify( - data, - undefined, - 2 - )}'` + if (data == null || event == null || uuid == null) { + parentPort?.postMessage({ + data: { + event, + message: 'Invalid worker message format', + name: 'WorkerMessageFormatError', + }, + event: WorkerMessageEvents.workerElementError, + uuid, + } satisfies WorkerMessage) + return + } + switch (event) { + case WorkerMessageEvents.addWorkerElement: + try { + const chargingStation = new ChargingStation( + data.index, + data.templateFile, + data.options ) - } + const stationInfo = chargingStation.stationInfo + if (stationInfo == null) { + throw new BaseError('Charging station info is not defined') + } + parentPort?.postMessage({ + data: stationInfo, + event: WorkerMessageEvents.addedWorkerElement, + uuid, + } satisfies WorkerMessage) + } catch (error) { + parentPort?.postMessage({ + data: { + event, + message: (error as Error).message, + name: (error as Error).name, + stack: (error as Error).stack, + }, + event: WorkerMessageEvents.workerElementError, + uuid, + } satisfies WorkerMessage) + } + break + default: + parentPort?.postMessage({ + data: { + event, + message: `Unknown worker message event: '${event}'`, + name: 'WorkerMessageEventError', + }, + event: WorkerMessageEvents.workerElementError, + uuid, + } satisfies WorkerMessage) } }) }