fix: untangle worker set message from application message
[e-mobility-charging-stations-simulator.git] / src / worker / WorkerTypes.ts
CommitLineData
66a7748d 1import type { Worker } from 'node:worker_threads'
c045d9a9 2
66a7748d 3import { type PoolEvent, PoolEvents, type ThreadPoolOptions } from 'poolifier'
8114d10e 4
a4624c96 5export enum WorkerProcessType {
721646e9 6 workerSet = 'workerSet',
244c1396 7 fixedPool = 'fixedPool',
56e2e1ab 8 /** @experimental */
244c1396 9 dynamicPool = 'dynamicPool'
a4624c96
JB
10}
11
e1d9a0f4 12export interface SetInfo {
66a7748d
JB
13 version: string
14 type: string
15 worker: string
4f02e9b4 16 started: boolean
66a7748d
JB
17 size: number
18 elementsExecuting: number
19 elementsPerWorker: number
e1d9a0f4 20}
b779c0f8 21
810f4caf 22export enum WorkerSetEvents {
4c7c767b
JB
23 started = 'started',
24 stopped = 'stopped',
810f4caf 25 error = 'error',
244c1396 26 elementAdded = 'elementAdded',
a223d9be 27 elementError = 'elementError'
810f4caf
JB
28}
29
30export const WorkerEvents = {
31 ...PoolEvents,
66a7748d
JB
32 ...WorkerSetEvents
33} as const
34// eslint-disable-next-line @typescript-eslint/no-redeclare
35export type WorkerEvents = PoolEvent | WorkerSetEvents
810f4caf 36
e1d9a0f4 37export interface WorkerOptions {
66a7748d 38 workerStartDelay?: number
da47bc29 39 elementAddDelay?: number
66a7748d
JB
40 poolMaxSize: number
41 poolMinSize: number
42 elementsPerWorker?: number
43 poolOptions?: ThreadPoolOptions
e1d9a0f4 44}
b8da29bc 45
66a7748d 46export type WorkerData = Record<string, unknown>
46eb543c 47
e1d9a0f4 48export interface WorkerSetElement {
66a7748d
JB
49 worker: Worker
50 numberOfWorkerElements: number
e1d9a0f4 51}
81797102 52
e1d9a0f4 53export interface WorkerMessage<T extends WorkerData> {
65d22502 54 uuid: `${string}-${string}-${string}-${string}`
66a7748d
JB
55 event: WorkerMessageEvents
56 data: T
e1d9a0f4 57}
c045d9a9 58
2a370053 59export enum WorkerMessageEvents {
244c1396
JB
60 addWorkerElement = 'addWorkerElement',
61 addedWorkerElement = 'addedWorkerElement',
62 workerElementError = 'workerElementError'
c045d9a9 63}
65d22502
JB
64
65export interface WorkerDataError extends WorkerData {
66 event: WorkerMessageEvents
67 name: string
68 message: string
69 stack?: string
70}