refactor: cleanup nullish values handling
[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',
56e2e1ab 7 /** @experimental */
721646e9 8 dynamicPool = 'dynamicPool',
a807045b 9 fixedPool = 'fixedPool',
a4624c96
JB
10}
11
e1d9a0f4 12export interface SetInfo {
66a7748d
JB
13 version: string
14 type: string
15 worker: string
16 size: number
17 elementsExecuting: number
18 elementsPerWorker: number
e1d9a0f4 19}
b779c0f8 20
810f4caf 21export enum WorkerSetEvents {
4c7c767b
JB
22 started = 'started',
23 stopped = 'stopped',
810f4caf 24 error = 'error',
c26984f2 25 elementStarted = 'elementStarted',
a807045b 26 elementError = 'elementError',
810f4caf
JB
27}
28
29export const WorkerEvents = {
30 ...PoolEvents,
66a7748d
JB
31 ...WorkerSetEvents
32} as const
33// eslint-disable-next-line @typescript-eslint/no-redeclare
34export type WorkerEvents = PoolEvent | WorkerSetEvents
810f4caf 35
e1d9a0f4 36export interface WorkerOptions {
66a7748d
JB
37 workerStartDelay?: number
38 elementStartDelay?: number
39 poolMaxSize: number
40 poolMinSize: number
41 elementsPerWorker?: number
42 poolOptions?: ThreadPoolOptions
e1d9a0f4 43}
b8da29bc 44
66a7748d 45export type WorkerData = Record<string, unknown>
46eb543c 46
e1d9a0f4 47export interface WorkerSetElement {
66a7748d
JB
48 worker: Worker
49 numberOfWorkerElements: number
e1d9a0f4 50}
81797102 51
e1d9a0f4 52export interface WorkerMessage<T extends WorkerData> {
66a7748d
JB
53 event: WorkerMessageEvents
54 data: T
e1d9a0f4 55}
c045d9a9 56
2a370053 57export enum WorkerMessageEvents {
721646e9 58 startWorkerElement = 'startWorkerElement',
2bb7a73e 59 startWorkerElementError = 'startWorkerElementError',
a807045b 60 startedWorkerElement = 'startedWorkerElement',
c045d9a9 61}