refactor: consolidate worker events enum
[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 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 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 MessageHandler<T> = (this: T, message: unknown) => void;
28
29 export type WorkerOptions = {
30 workerStartDelay?: number;
31 elementStartDelay?: number;
32 poolMaxSize: number;
33 poolMinSize: number;
34 elementsPerWorker?: number;
35 poolOptions?: PoolOptions<Worker>;
36 messageHandler?: MessageHandler<Worker>;
37 };
38
39 export type WorkerData = Record<string, unknown>;
40
41 export type WorkerSetElement = {
42 worker: Worker;
43 numberOfWorkerElements: number;
44 };
45
46 export type WorkerMessage<T extends WorkerData> = {
47 id: WorkerMessageEvents;
48 data: T;
49 };
50
51 export enum WorkerMessageEvents {
52 startWorkerElement = 'startWorkerElement',
53 }