perf: properly bound methods in hot paths
[e-mobility-charging-stations-simulator.git] / src / worker / WorkerTypes.ts
... / ...
CommitLineData
1import type { Worker } from 'node:worker_threads';
2
3import type { PoolOptions } from 'poolifier';
4
5export enum WorkerProcessType {
6 workerSet = 'workerSet',
7 dynamicPool = 'dynamicPool',
8 staticPool = 'staticPool',
9}
10
11export type MessageHandler<T> = (this: T, message: unknown) => void;
12
13export type WorkerOptions = {
14 workerStartDelay?: number;
15 elementStartDelay?: number;
16 poolMaxSize: number;
17 poolMinSize: number;
18 elementsPerWorker?: number;
19 poolOptions?: PoolOptions<Worker>;
20 messageHandler?: MessageHandler<Worker>;
21};
22
23export type WorkerData = Record<string, unknown>;
24
25export type WorkerSetElement = {
26 worker: Worker;
27 numberOfWorkerElements: number;
28};
29
30export type WorkerMessage<T extends WorkerData> = {
31 id: WorkerMessageEvents;
32 data: T;
33};
34
35export enum WorkerMessageEvents {
36 startWorkerElement = 'startWorkerElement',
37}