-import { PoolOptions } from 'poolifier';
-import { Worker } from 'worker_threads';
+import type { Worker } from 'worker_threads';
+
+import type { PoolOptions } from 'poolifier';
export enum WorkerProcessType {
WORKER_SET = 'workerSet',
DYNAMIC_POOL = 'dynamicPool',
- STATIC_POOL = 'staticPool'
+ STATIC_POOL = 'staticPool',
}
export interface WorkerOptions {
- startDelay?: number;
+ workerStartDelay?: number;
+ elementStartDelay?: number;
poolMaxSize?: number;
poolMinSize?: number;
elementsPerWorker?: number;
poolOptions?: PoolOptions<Worker>;
+ messageHandler?: (message: unknown) => void | Promise<void>;
}
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
-export interface WorkerData {}
-
-export interface StationWorkerData extends WorkerData {
- index: number;
- templateFile: string;
-}
+export type WorkerData = Record<string, unknown>;
export interface WorkerSetElement {
worker: Worker;
numberOfWorkerElements: number;
}
-export interface WorkerMessage {
- id: WorkerEvents;
- data: any;
+export interface WorkerMessage<T extends WorkerData> {
+ id: WorkerMessageEvents;
+ data: T;
}
-export enum WorkerEvents {
+export enum WorkerMessageEvents {
START_WORKER_ELEMENT = 'startWorkerElement',
- STOP_WORKER_ELEMENT = 'stopWorkerElement',
- PERFORMANCE_STATISTICS = 'performanceStatistics'
}
-