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