Release 1.0.47
[e-mobility-charging-stations-simulator.git] / src / types / Worker.ts
index bc93d76ea5c0f85514bca82b338605eb7b0675f2..eedf5611b773a6f723ce662b189e1572c99432b3 100644 (file)
@@ -1,17 +1,41 @@
+import { PoolOptions } from 'poolifier';
 import { Worker } from 'worker_threads';
 
-// FIXME: make it more generic
-export interface WorkerData {
+export enum WorkerProcessType {
+  WORKER_SET = 'workerSet',
+  DYNAMIC_POOL = 'dynamicPool',
+  STATIC_POOL = 'staticPool'
+}
+
+export interface WorkerOptions {
+  startDelay?: number;
+  poolMaxSize?: number;
+  poolMinSize?: number;
+  elementsPerWorker?: number;
+  poolOptions?: PoolOptions<Worker>;
+}
+
+// eslint-disable-next-line @typescript-eslint/no-empty-interface
+export interface WorkerData {}
+
+export interface StationWorkerData extends WorkerData {
   index: number;
   templateFile: string;
 }
 
 export interface WorkerSetElement {
-  worker: Worker,
-  numberOfWorkerElements: number
+  worker: Worker;
+  numberOfWorkerElements: number;
+}
+
+export interface WorkerMessage {
+  id: WorkerEvents;
+  data: any;
 }
 
 export enum WorkerEvents {
   START_WORKER_ELEMENT = 'startWorkerElement',
+  STOP_WORKER_ELEMENT = 'stopWorkerElement',
+  PERFORMANCE_STATISTICS = 'performanceStatistics'
 }