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