Introduce JSON type and use it for OCPP and internal message structure
[e-mobility-charging-stations-simulator.git] / src / types / Worker.ts
CommitLineData
c3ee95af 1import { JsonType } from './JsonType';
9efbac5b 2import { PoolOptions } from 'poolifier';
c045d9a9
JB
3import { Worker } from 'worker_threads';
4
a4624c96
JB
5export enum WorkerProcessType {
6 WORKER_SET = 'workerSet',
7 DYNAMIC_POOL = 'dynamicPool',
8 STATIC_POOL = 'staticPool'
9}
10
b8da29bc 11export interface WorkerOptions {
322c9192 12 startDelay?: number;
b8da29bc
JB
13 poolMaxSize?: number;
14 poolMinSize?: number;
15 elementsPerWorker?: number;
9efbac5b 16 poolOptions?: PoolOptions<Worker>;
821c6c82 17 messageHandler?: (message: unknown) => void | Promise<void>;
b8da29bc
JB
18}
19
c3ee95af 20export type WorkerData = JsonType;
46eb543c 21
c045d9a9 22export interface WorkerSetElement {
81797102
JB
23 worker: Worker;
24 numberOfWorkerElements: number;
25}
26
c3ee95af 27export interface WorkerMessage<T extends WorkerData> {
2a370053 28 id: WorkerMessageEvents;
c3ee95af 29 data: T;
c045d9a9
JB
30}
31
2a370053 32export enum WorkerMessageEvents {
c045d9a9 33 START_WORKER_ELEMENT = 'startWorkerElement',
98dc07fa 34 STOP_WORKER_ELEMENT = 'stopWorkerElement'
c045d9a9
JB
35}
36