build(deps): apply updates
[e-mobility-charging-stations-simulator.git] / src / worker / WorkerTypes.ts
CommitLineData
01f4001e 1import type { Worker } from 'node:worker_threads';
c045d9a9 2
be245fda 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',
1d8f226b 9 fixedPool = 'fixedPool',
a4624c96
JB
10}
11
e1d9a0f4 12export interface SetInfo {
628c30e5 13 version: string;
0bde1ea1
JB
14 type: string;
15 worker: string;
b779c0f8 16 size: number;
19bdf4ca 17 elementsExecuting: number;
b779c0f8 18 elementsPerWorker: number;
e1d9a0f4 19}
b779c0f8 20
810f4caf
JB
21export enum WorkerSetEvents {
22 error = 'error',
c26984f2
JB
23 elementStarted = 'elementStarted',
24 elementError = 'elementError',
810f4caf
JB
25}
26
27export const WorkerEvents = {
28 ...PoolEvents,
29 ...WorkerSetEvents,
30} as const;
31export type WorkerEvents = PoolEvent | WorkerSetEvents;
32
e1d9a0f4 33export interface WorkerOptions {
4bfd80fa
JB
34 workerStartDelay?: number;
35 elementStartDelay?: number;
1895299d
JB
36 poolMaxSize: number;
37 poolMinSize: number;
b8da29bc 38 elementsPerWorker?: number;
be245fda 39 poolOptions?: ThreadPoolOptions;
e1d9a0f4 40}
b8da29bc 41
32de5a57 42export type WorkerData = Record<string, unknown>;
46eb543c 43
e1d9a0f4 44export interface WorkerSetElement {
81797102
JB
45 worker: Worker;
46 numberOfWorkerElements: number;
e1d9a0f4 47}
81797102 48
e1d9a0f4 49export interface WorkerMessage<T extends WorkerData> {
8cc482a9 50 event: WorkerMessageEvents;
c3ee95af 51 data: T;
e1d9a0f4 52}
c045d9a9 53
2a370053 54export enum WorkerMessageEvents {
721646e9 55 startWorkerElement = 'startWorkerElement',
2bb7a73e
JB
56 startWorkerElementError = 'startWorkerElementError',
57 startedWorkerElement = 'startedWorkerElement',
c045d9a9 58}