feat: display worker set/pool info at startup
[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 type: string;
13 worker: string;
14 size: number;
15 elementsExecuting: number;
16 elementsPerWorker: number;
17 };
18
19 export enum WorkerSetEvents {
20 error = 'error',
21 }
22
23 export const WorkerEvents = {
24 ...PoolEvents,
25 ...WorkerSetEvents,
26 } as const;
27 export type WorkerEvents = PoolEvent | WorkerSetEvents;
28
29 export type WorkerOptions = {
30 workerStartDelay?: number;
31 elementStartDelay?: number;
32 poolMaxSize: number;
33 poolMinSize: number;
34 elementsPerWorker?: number;
35 poolOptions?: ThreadPoolOptions;
36 };
37
38 export type WorkerData = Record<string, unknown>;
39
40 export type WorkerSetElement = {
41 worker: Worker;
42 numberOfWorkerElements: number;
43 };
44
45 export type WorkerMessage<T extends WorkerData> = {
46 id: WorkerMessageEvents;
47 data: T;
48 };
49
50 export enum WorkerMessageEvents {
51 startWorkerElement = 'startWorkerElement',
52 }