build(deps-dev): 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
JB
8 dynamicPool = 'dynamicPool',
9 staticPool = 'staticPool',
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',
23}
24
25export const WorkerEvents = {
26 ...PoolEvents,
27 ...WorkerSetEvents,
28} as const;
29export type WorkerEvents = PoolEvent | WorkerSetEvents;
30
e1d9a0f4 31export interface WorkerOptions {
4bfd80fa
JB
32 workerStartDelay?: number;
33 elementStartDelay?: number;
1895299d
JB
34 poolMaxSize: number;
35 poolMinSize: number;
b8da29bc 36 elementsPerWorker?: number;
be245fda 37 poolOptions?: ThreadPoolOptions;
e1d9a0f4 38}
b8da29bc 39
32de5a57 40export type WorkerData = Record<string, unknown>;
46eb543c 41
e1d9a0f4 42export interface WorkerSetElement {
81797102
JB
43 worker: Worker;
44 numberOfWorkerElements: number;
e1d9a0f4 45}
81797102 46
e1d9a0f4 47export interface WorkerMessage<T extends WorkerData> {
2a370053 48 id: WorkerMessageEvents;
c3ee95af 49 data: T;
e1d9a0f4 50}
c045d9a9 51
2a370053 52export enum WorkerMessageEvents {
721646e9 53 startWorkerElement = 'startWorkerElement',
c045d9a9 54}