X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fpools%2Fpool.ts;h=a025f3ced9568eb872957b98d060ce66ef27ad10;hb=b3b1857ba11fd35d0f7118ef8046c38676473a15;hp=9eec76b944ede9fc05af08b552689f534f6a40bb;hpb=31847469b406e46688d8aafb880e250706dd8aee;p=poolifier.git diff --git a/src/pools/pool.ts b/src/pools/pool.ts index 9eec76b9..a025f3ce 100644 --- a/src/pools/pool.ts +++ b/src/pools/pool.ts @@ -3,7 +3,10 @@ import type { EventEmitterAsyncResource } from 'node:events' import type { TransferListItem, WorkerOptions } from 'node:worker_threads' import type { TaskFunctionProperties } from '../utility-types.js' -import type { TaskFunction } from '../worker/task-functions.js' +import type { + TaskFunction, + TaskFunctionObject +} from '../worker/task-functions.js' import type { WorkerChoiceStrategy, WorkerChoiceStrategyOptions @@ -77,7 +80,7 @@ export interface PoolInfo { readonly worker: WorkerType readonly started: boolean readonly ready: boolean - readonly strategy: WorkerChoiceStrategy + readonly defaultStrategy: WorkerChoiceStrategy readonly strategyRetries: number readonly minSize: number readonly maxSize: number @@ -110,6 +113,24 @@ export interface PoolInfo { readonly average?: number readonly median?: number } + readonly elu?: { + idle: { + readonly minimum: number + readonly maximum: number + readonly average?: number + readonly median?: number + } + active: { + readonly minimum: number + readonly maximum: number + readonly average?: number + readonly median?: number + } + utilization: { + readonly average?: number + readonly median?: number + } + } } /** @@ -137,7 +158,7 @@ export interface TasksQueueOptions { /** * Whether to enable tasks stealing under back pressure. * - * @defaultValue true + * @defaultValue false */ readonly tasksStealingOnBackPressure?: boolean /** @@ -185,7 +206,7 @@ export interface PoolOptions { */ startWorkers?: boolean /** - * The worker choice strategy to use in this pool. + * The default worker choice strategy to use in this pool. * * @defaultValue WorkerChoiceStrategies.ROUND_ROBIN */ @@ -308,11 +329,11 @@ export interface IPool< * @param fn - The task function. * @returns `true` if the task function was added, `false` otherwise. * @throws {@link https://nodejs.org/api/errors.html#class-typeerror} If the `name` parameter is not a string or an empty string. - * @throws {@link https://nodejs.org/api/errors.html#class-typeerror} If the `fn` parameter is not a function. + * @throws {@link https://nodejs.org/api/errors.html#class-typeerror} If the `fn` parameter is not a function or task function object. */ readonly addTaskFunction: ( name: string, - fn: TaskFunction + fn: TaskFunction | TaskFunctionObject ) => Promise /** * Removes a task function from this pool. @@ -335,9 +356,9 @@ export interface IPool< */ readonly setDefaultTaskFunction: (name: string) => Promise /** - * Sets the worker choice strategy in this pool. + * Sets the default worker choice strategy in this pool. * - * @param workerChoiceStrategy - The worker choice strategy. + * @param workerChoiceStrategy - The default worker choice strategy. * @param workerChoiceStrategyOptions - The worker choice strategy options. */ readonly setWorkerChoiceStrategy: ( @@ -348,10 +369,11 @@ export interface IPool< * Sets the worker choice strategy options in this pool. * * @param workerChoiceStrategyOptions - The worker choice strategy options. + * @returns `true` if the worker choice strategy options were set, `false` otherwise. */ readonly setWorkerChoiceStrategyOptions: ( workerChoiceStrategyOptions: WorkerChoiceStrategyOptions - ) => void + ) => boolean /** * Enables/disables the worker node tasks queue in this pool. *