refactor: align set information namespace
[e-mobility-charging-stations-simulator.git] / src / worker / WorkerTypes.ts
1 import type { Worker } from 'node:worker_threads';
2
3 import { type PoolEvent, PoolEvents, type ThreadPoolOptions } from 'poolifier';
4
5 export enum WorkerProcessType {
6 workerSet = 'workerSet',
7 dynamicPool = 'dynamicPool',
8 staticPool = 'staticPool',
9 }
10
11 export type SetInfo = {
12 size: number;
13 elementsExecuting: number;
14 elementsPerWorker: number;
15 };
16
17 export enum WorkerSetEvents {
18 error = 'error',
19 }
20
21 export const WorkerEvents = {
22 ...PoolEvents,
23 ...WorkerSetEvents,
24 } as const;
25 export type WorkerEvents = PoolEvent | WorkerSetEvents;
26
27 export type WorkerOptions = {
28 workerStartDelay?: number;
29 elementStartDelay?: number;
30 poolMaxSize: number;
31 poolMinSize: number;
32 elementsPerWorker?: number;
33 poolOptions?: ThreadPoolOptions;
34 };
35
36 export type WorkerData = Record<string, unknown>;
37
38 export type WorkerSetElement = {
39 worker: Worker;
40 numberOfWorkerElements: number;
41 };
42
43 export type WorkerMessage<T extends WorkerData> = {
44 id: WorkerMessageEvents;
45 data: T;
46 };
47
48 export enum WorkerMessageEvents {
49 startWorkerElement = 'startWorkerElement',
50 }