import type { WorkerMessageType, WorkerMessagePayload } from "../../types.js"; import WorkerThread from "./worker-thread.js"; import WorkerJob from "./worker-job.js"; /** WorkerPool onDebug Callback Parameters */ type OnDebugParameters = { message: string; worker: string; name: string; job: string; backlog: number; workerThread: WorkerThread; }; /** WorkerPool Properties */ export type WorkerPoolProps = { name?: string; source?: string; url?: string; maxConcurrency?: number; maxMobileConcurrency?: number; onDebug?: (options: OnDebugParameters) => any; reuseWorkers?: boolean; }; /** Private helper types */ type OnMessage = (job: WorkerJob, type: WorkerMessageType, payload: WorkerMessagePayload) => void; type OnError = (job: WorkerJob, error: Error) => void; /** * Process multiple data messages with small pool of identical workers */ export default class WorkerPool { name: string; source?: string; url?: string; maxConcurrency: number; maxMobileConcurrency: number; onDebug: (options: OnDebugParameters) => any; reuseWorkers: boolean; private props; private jobQueue; private idleQueue; private count; private isDestroyed; /** Checks if workers are supported on this platform */ static isSupported(): boolean; /** * @param processor - worker function * @param maxConcurrency - max count of workers */ constructor(props: WorkerPoolProps); /** * Terminates all workers in the pool * @note Can free up significant memory */ destroy(): void; setProps(props: WorkerPoolProps): void; startJob(name: string, onMessage?: OnMessage, onError?: OnError): Promise; /** * Starts first queued job if worker is available or can be created * Called when job is started and whenever a worker returns to the idleQueue */ _startQueuedJob(): Promise; /** * Returns a worker to the idle queue * Destroys the worker if * - pool is destroyed * - if this pool doesn't reuse workers * - if maxConcurrency has been lowered * @param worker */ returnWorkerToQueue(worker: WorkerThread): void; /** * Returns idle worker or creates new worker if maxConcurrency has not been reached */ _getAvailableWorker(): WorkerThread | null; _getMaxConcurrency(): number; } export {}; //# sourceMappingURL=worker-pool.d.ts.map