fix: avoid overlapping schedule periods in get composite schedule
[e-mobility-charging-stations-simulator.git] / src / worker / WorkerTypes.ts
... / ...
CommitLineData
1import type { Worker } from 'node:worker_threads';
2
3import { type PoolEvent, PoolEvents, type ThreadPoolOptions } from 'poolifier';
4
5export enum WorkerProcessType {
6 workerSet = 'workerSet',
7 /** @experimental */
8 dynamicPool = 'dynamicPool',
9 staticPool = 'staticPool',
10}
11
12export interface SetInfo {
13 version: string;
14 type: string;
15 worker: string;
16 size: number;
17 elementsExecuting: number;
18 elementsPerWorker: number;
19}
20
21export enum WorkerSetEvents {
22 error = 'error',
23 elementStarted = 'elementStarted',
24 elementError = 'elementError',
25}
26
27export const WorkerEvents = {
28 ...PoolEvents,
29 ...WorkerSetEvents,
30} as const;
31export type WorkerEvents = PoolEvent | WorkerSetEvents;
32
33export interface WorkerOptions {
34 workerStartDelay?: number;
35 elementStartDelay?: number;
36 poolMaxSize: number;
37 poolMinSize: number;
38 elementsPerWorker?: number;
39 poolOptions?: ThreadPoolOptions;
40}
41
42export type WorkerData = Record<string, unknown>;
43
44export interface WorkerSetElement {
45 worker: Worker;
46 numberOfWorkerElements: number;
47}
48
49export interface WorkerMessage<T extends WorkerData> {
50 event: WorkerMessageEvents;
51 data: T;
52}
53
54export enum WorkerMessageEvents {
55 startWorkerElement = 'startWorkerElement',
56 startWorkerElementError = 'startWorkerElementError',
57 startedWorkerElement = 'startedWorkerElement',
58}