build(deps): apply updates
[e-mobility-charging-stations-simulator.git] / src / worker / WorkerTypes.ts
... / ...
CommitLineData
1import type { Worker } from 'node:worker_threads';
2
3import { type PoolEvent, PoolEvents, type PoolOptions } from 'poolifier';
4
5export enum WorkerProcessType {
6 workerSet = 'workerSet',
7 /** @experimental */
8 dynamicPool = 'dynamicPool',
9 fixedPool = 'fixedPool',
10}
11
12export interface SetInfo {
13 version: string;
14 type: string;
15 worker: string;
16 size: number;
17 elementsExecuting: number;
18 elementsPerWorker: number;
19}
20
21export enum WorkerSetEvents {
22 started = 'started',
23 stopped = 'stopped',
24 error = 'error',
25 elementStarted = 'elementStarted',
26 elementError = 'elementError',
27}
28
29export const WorkerEvents = {
30 ...PoolEvents,
31 ...WorkerSetEvents,
32} as const;
33export type WorkerEvents = PoolEvent | WorkerSetEvents;
34
35export interface WorkerOptions {
36 workerStartDelay?: number;
37 elementStartDelay?: number;
38 poolMaxSize: number;
39 poolMinSize: number;
40 elementsPerWorker?: number;
41 poolOptions?: PoolOptions<Worker>;
42}
43
44export type WorkerData = Record<string, unknown>;
45
46export interface WorkerSetElement {
47 worker: Worker;
48 numberOfWorkerElements: number;
49}
50
51export interface WorkerMessage<T extends WorkerData> {
52 event: WorkerMessageEvents;
53 data: T;
54}
55
56export enum WorkerMessageEvents {
57 startWorkerElement = 'startWorkerElement',
58 startWorkerElementError = 'startWorkerElementError',
59 startedWorkerElement = 'startedWorkerElement',
60}