import type { Worker } from 'node:worker_threads';
-import type { PoolOptions } from 'poolifier';
+import { type PoolEvent, PoolEvents, type ThreadPoolOptions } from 'poolifier';
export enum WorkerProcessType {
- WORKER_SET = 'workerSet',
- DYNAMIC_POOL = 'dynamicPool',
- STATIC_POOL = 'staticPool',
+ workerSet = 'workerSet',
+ dynamicPool = 'dynamicPool',
+ staticPool = 'staticPool',
}
-export type MessageHandler<T> = (this: T, message: unknown) => void;
+export type SetInfo = {
+ version: string;
+ type: string;
+ worker: string;
+ size: number;
+ elementsExecuting: number;
+ elementsPerWorker: number;
+};
+
+export enum WorkerSetEvents {
+ error = 'error',
+}
+
+export const WorkerEvents = {
+ ...PoolEvents,
+ ...WorkerSetEvents,
+} as const;
+export type WorkerEvents = PoolEvent | WorkerSetEvents;
export type WorkerOptions = {
workerStartDelay?: number;
poolMaxSize: number;
poolMinSize: number;
elementsPerWorker?: number;
- poolOptions?: PoolOptions<Worker>;
- messageHandler?: MessageHandler<Worker>;
+ poolOptions?: ThreadPoolOptions;
};
export type WorkerData = Record<string, unknown>;
};
export enum WorkerMessageEvents {
- START_WORKER_ELEMENT = 'startWorkerElement',
+ startWorkerElement = 'startWorkerElement',
}