refactor!: rename staticPool tunable in worker section to fixedPool
[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 /** @experimental */
8 dynamicPool = 'dynamicPool',
9 fixedPool = 'fixedPool',
10 }
11
12 export interface SetInfo {
13 version: string;
14 type: string;
15 worker: string;
16 size: number;
17 elementsExecuting: number;
18 elementsPerWorker: number;
19 }
20
21 export enum WorkerSetEvents {
22 error = 'error',
23 elementStarted = 'elementStarted',
24 elementError = 'elementError',
25 }
26
27 export const WorkerEvents = {
28 ...PoolEvents,
29 ...WorkerSetEvents,
30 } as const;
31 export type WorkerEvents = PoolEvent | WorkerSetEvents;
32
33 export interface WorkerOptions {
34 workerStartDelay?: number;
35 elementStartDelay?: number;
36 poolMaxSize: number;
37 poolMinSize: number;
38 elementsPerWorker?: number;
39 poolOptions?: ThreadPoolOptions;
40 }
41
42 export type WorkerData = Record<string, unknown>;
43
44 export interface WorkerSetElement {
45 worker: Worker;
46 numberOfWorkerElements: number;
47 }
48
49 export interface WorkerMessage<T extends WorkerData> {
50 event: WorkerMessageEvents;
51 data: T;
52 }
53
54 export enum WorkerMessageEvents {
55 startWorkerElement = 'startWorkerElement',
56 startWorkerElementError = 'startWorkerElementError',
57 startedWorkerElement = 'startedWorkerElement',
58 }