feat: expose pool/set information
[e-mobility-charging-stations-simulator.git] / src / worker / WorkerTypes.ts
1 import type { Worker } from 'node:worker_threads';
2
3 import type { PoolOptions } 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 runningElements: number;
14 elementsPerWorker: number;
15 };
16
17 export type MessageHandler<T> = (this: T, message: unknown) => void;
18
19 export type WorkerOptions = {
20 workerStartDelay?: number;
21 elementStartDelay?: number;
22 poolMaxSize: number;
23 poolMinSize: number;
24 elementsPerWorker?: number;
25 poolOptions?: PoolOptions<Worker>;
26 messageHandler?: MessageHandler<Worker>;
27 };
28
29 export type WorkerData = Record<string, unknown>;
30
31 export type WorkerSetElement = {
32 worker: Worker;
33 numberOfWorkerElements: number;
34 };
35
36 export type WorkerMessage<T extends WorkerData> = {
37 id: WorkerMessageEvents;
38 data: T;
39 };
40
41 export enum WorkerMessageEvents {
42 startWorkerElement = 'startWorkerElement',
43 }