*
* @param data - workerData
*/
-const startChargingStation = (data: ChargingStationWorkerData): void => {
- new ChargingStation(data.index, data.templateFile).start();
+const startChargingStation = (data?: ChargingStationWorkerData): void => {
+ new ChargingStation(data!.index, data!.templateFile).start();
};
class ChargingStationWorker extends AsyncResource {
super(moduleName);
// Add message listener to create and start charging station from the main thread
parentPort?.on('message', (message: WorkerMessage<ChargingStationWorkerData>) => {
- if (message.id === WorkerMessageEvents.startWorkerElement) {
- this.runInAsyncScope(
- startChargingStation.bind(this) as (data: ChargingStationWorkerData) => void,
- this,
- message.data
- );
+ if (message.event === WorkerMessageEvents.startWorkerElement) {
+ try {
+ this.runInAsyncScope(
+ startChargingStation.bind(this) as (data?: ChargingStationWorkerData) => void,
+ this,
+ message.data,
+ );
+ parentPort?.postMessage({
+ event: WorkerMessageEvents.startedWorkerElement,
+ });
+ } catch (error) {
+ parentPort?.postMessage({
+ event: WorkerMessageEvents.startWorkerElementError,
+ data: {
+ message: (error as Error).message,
+ stack: (error as Error).stack,
+ },
+ });
+ }
}
});
}