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