ATG: add support for idTag distribution algorithms
[e-mobility-charging-stations-simulator.git] / src / types / Worker.ts
1 import type { Worker } from 'worker_threads';
2
3 import type { PoolOptions } from 'poolifier';
4
5 export enum WorkerProcessType {
6 WORKER_SET = 'workerSet',
7 DYNAMIC_POOL = 'dynamicPool',
8 STATIC_POOL = 'staticPool',
9 }
10
11 export type WorkerOptions = {
12 workerStartDelay?: number;
13 elementStartDelay?: number;
14 poolMaxSize?: number;
15 poolMinSize?: number;
16 elementsPerWorker?: number;
17 poolOptions?: PoolOptions<Worker>;
18 messageHandler?: (this: Worker, message: unknown) => void | Promise<void>;
19 };
20
21 export type WorkerData = Record<string, unknown>;
22
23 export type WorkerSetElement = {
24 worker: Worker;
25 numberOfWorkerElements: number;
26 };
27
28 export type WorkerMessage<T extends WorkerData> = {
29 id: WorkerMessageEvents;
30 data: T;
31 };
32
33 export enum WorkerMessageEvents {
34 START_WORKER_ELEMENT = 'startWorkerElement',
35 }