* Pool types.
*
* @enum
+ * @internal
*/
export enum PoolType {
/**
/**
* Options for a poolifier pool.
+ *
+ * @typeParam Worker - Type of worker.
*/
export interface PoolOptions<Worker extends IWorker> {
/**
exitHandler?: ExitHandler<Worker>
/**
* The worker choice strategy to use in this pool.
+ *
+ * @defaultValue WorkerChoiceStrategies.ROUND_ROBIN
*/
workerChoiceStrategy?: WorkerChoiceStrategy
/**
/**
* Pool worker tasks queue.
*
- * @experimental
* @defaultValue false
*/
enableTasksQueue?: boolean
/**
* Pool worker tasks queue options.
- *
- * @experimental
*/
tasksQueueOptions?: TasksQueueOptions
}
*
* @typeParam Worker - Type of worker which manages this pool.
* @typeParam Data - Type of data sent to the worker. This can only be serializable data.
- * @typeParam Response - Type of response of execution. This can only be serializable data.
+ * @typeParam Response - Type of execution response. This can only be serializable data.
*/
export interface IPool<
Worker extends IWorker,
*/
readonly emitter?: PoolEmitter
/**
- * Whether the pool is full or not.
+ * Executes the function specified in the worker constructor with the task data input parameter.
*
- * The pool filling boolean status.
+ * @param data - The task input data for the specified worker function. This can only be serializable data.
+ * @returns Promise that will be fulfilled when the task is completed.
*/
- readonly full: boolean
+ execute: (data?: Data) => Promise<Response>
/**
- * Whether the pool is busy or not.
- *
- * The pool busyness boolean status.
+ * Shutdowns every current worker in this pool.
*/
- readonly busy: boolean
+ destroy: () => Promise<void>
/**
- * Finds a free worker node key based on the number of tasks the worker has applied.
- *
- * If a worker is found with `0` running tasks, it is detected as free and its worker node key is returned.
- *
- * If no free worker is found, `-1` is returned.
+ * Sets the worker choice strategy in this pool.
*
- * @returns A worker node key if there is one, `-1` otherwise.
+ * @param workerChoiceStrategy - The worker choice strategy.
+ * @param workerChoiceStrategyOptions - The worker choice strategy options.
*/
- findFreeWorkerNodeKey: () => number
+ setWorkerChoiceStrategy: (
+ workerChoiceStrategy: WorkerChoiceStrategy,
+ workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions
+ ) => void
/**
- * Performs the task specified in the constructor with the data parameter.
+ * Sets the worker choice strategy options in this pool.
*
- * @param data - The input for the specified task. This can only be serializable data.
- * @returns Promise that will be resolved when the task is successfully completed.
+ * @param workerChoiceStrategyOptions - The worker choice strategy options.
*/
- execute: (data: Data) => Promise<Response>
+ setWorkerChoiceStrategyOptions: (
+ workerChoiceStrategyOptions: WorkerChoiceStrategyOptions
+ ) => void
/**
- * Shutdowns every current worker in this pool.
+ * Enables/disables the worker tasks queue in this pool.
+ *
+ * @param enable - Whether to enable or disable the worker tasks queue.
+ * @param tasksQueueOptions - The worker tasks queue options.
*/
- destroy: () => Promise<void>
+ enableTasksQueue: (
+ enable: boolean,
+ tasksQueueOptions?: TasksQueueOptions
+ ) => void
/**
- * Sets the worker choice strategy in this pool.
+ * Sets the worker tasks queue options in this pool.
*
- * @param workerChoiceStrategy - The worker choice strategy.
+ * @param tasksQueueOptions - The worker tasks queue options.
*/
- setWorkerChoiceStrategy: (workerChoiceStrategy: WorkerChoiceStrategy) => void
+ setTasksQueueOptions: (tasksQueueOptions: TasksQueueOptions) => void
}