Use eslint extension for import sorting instead of unmaintained external ones
[e-mobility-charging-stations-simulator.git] / src / types / Worker.ts
CommitLineData
c045d9a9
JB
1import { Worker } from 'worker_threads';
2
8114d10e
JB
3import { PoolOptions } from 'poolifier';
4
5import { JsonObject } from './JsonType';
6
a4624c96
JB
7export enum WorkerProcessType {
8 WORKER_SET = 'workerSet',
9 DYNAMIC_POOL = 'dynamicPool',
e7aeea18 10 STATIC_POOL = 'staticPool',
a4624c96
JB
11}
12
b8da29bc 13export interface WorkerOptions {
4bfd80fa
JB
14 workerStartDelay?: number;
15 elementStartDelay?: number;
b8da29bc
JB
16 poolMaxSize?: number;
17 poolMinSize?: number;
18 elementsPerWorker?: number;
9efbac5b 19 poolOptions?: PoolOptions<Worker>;
821c6c82 20 messageHandler?: (message: unknown) => void | Promise<void>;
b8da29bc
JB
21}
22
e3822d6f 23export type WorkerData = JsonObject;
46eb543c 24
c045d9a9 25export interface WorkerSetElement {
81797102
JB
26 worker: Worker;
27 numberOfWorkerElements: number;
28}
29
c3ee95af 30export interface WorkerMessage<T extends WorkerData> {
2a370053 31 id: WorkerMessageEvents;
c3ee95af 32 data: T;
c045d9a9
JB
33}
34
2a370053 35export enum WorkerMessageEvents {
c045d9a9 36 START_WORKER_ELEMENT = 'startWorkerElement',
e7aeea18 37 STOP_WORKER_ELEMENT = 'stopWorkerElement',
c045d9a9 38}