import { Configuration } from '../utils';
import { WorkerConstants, type WorkerMessage, WorkerMessageEvents } from '../worker';
+const moduleName = 'ChargingStationWorker';
+
/**
- * Create and start a charging station instance
+ * Creates and starts a charging station instance
*
* @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 {
constructor() {
- super('ChargingStationWorker');
+ 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) {
+ if (message.event === WorkerMessageEvents.startWorkerElement) {
this.runInAsyncScope(
- startChargingStation.bind(this) as (data: ChargingStationWorkerData) => void,
+ startChargingStation.bind(this) as (data?: ChargingStationWorkerData) => void,
this,
- message.data
+ message.data,
);
}
});
}
}
-export let chargingStationWorker: ChargingStationWorker;
-// Conditionally export ThreadWorker instance for pool usage
-export let threadWorker: ThreadWorker;
+export let chargingStationWorker: ChargingStationWorker | ThreadWorker<ChargingStationWorkerData>;
if (Configuration.workerPoolInUse()) {
- threadWorker = new ThreadWorker<ChargingStationWorkerData>(startChargingStation, {
+ chargingStationWorker = new ThreadWorker<ChargingStationWorkerData>(startChargingStation, {
maxInactiveTime: WorkerConstants.POOL_MAX_INACTIVE_TIME,
});
} else {