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
readonly worker: WorkerType
readonly started: boolean
readonly ready: boolean
- readonly strategy: WorkerChoiceStrategy
+ readonly defaultStrategy: WorkerChoiceStrategy
readonly strategyRetries: number
readonly minSize: number
readonly maxSize: number
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
+ }
+ }
}
/**
/**
* Whether to enable tasks stealing under back pressure.
*
- * @defaultValue true
+ * @defaultValue false
*/
readonly tasksStealingOnBackPressure?: boolean
/**
*/
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
*/
* @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<Data, Response>
+ fn: TaskFunction<Data, Response> | TaskFunctionObject<Data, Response>
) => Promise<boolean>
/**
* Removes a task function from this pool.
*/
readonly setDefaultTaskFunction: (name: string) => Promise<boolean>
/**
- * 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: (
* 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.
*