fix(ui): fix path to configuration file template
[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 elementStartDelay?: number
40 poolMaxSize: number
41 poolMinSize: number
42 elementsPerWorker?: number
43 poolOptions?: ThreadPoolOptions
44}
45
46export type WorkerData = Record<string, unknown>
47
48export interface WorkerSetElement {
49 worker: Worker
50 numberOfWorkerElements: number
51}
52
53export interface WorkerMessage<T extends WorkerData> {
54 event: WorkerMessageEvents
55 data: T
56}
57
58export enum WorkerMessageEvents {
59 addWorkerElement = 'addWorkerElement',
60 addedWorkerElement = 'addedWorkerElement',
61 workerElementError = 'workerElementError'
62}