poolifier - v5.0.2
    Preparing search index...

    Interface IPool<Worker, Data, Response>

    Contract definition for a poolifier pool.

    interface IPool<Worker extends IWorker, Data = unknown, Response = unknown> {
        addTaskFunction: (
            name: string,
            fn: TaskFunction<Data, Response> | TaskFunctionObject<Data, Response>,
        ) => Promise<boolean>;
        destroy: () => Promise<void>;
        emitter?: EventEmitterAsyncResource;
        enableTasksQueue: (
            enable: boolean,
            tasksQueueOptions?: TasksQueueOptions,
        ) => void;
        execute: (
            data?: Data,
            name?: string,
            abortSignal?: AbortSignal,
            transferList?: readonly Transferable[],
        ) => Promise<Response>;
        hasTaskFunction: (name: string) => boolean;
        info: PoolInfo;
        listTaskFunctionsProperties: () => TaskFunctionProperties[];
        mapExecute: (
            data: Iterable<Data>,
            name?: string,
            abortSignals?: Iterable<AbortSignal, any, any>,
            transferList?: readonly Transferable[],
        ) => Promise<Response[]>;
        removeTaskFunction: (name: string) => Promise<boolean>;
        setDefaultTaskFunction: (name: string) => Promise<boolean>;
        setTasksQueueOptions: (tasksQueueOptions: TasksQueueOptions) => void;
        setWorkerChoiceStrategy: (
            workerChoiceStrategy:
                | "FAIR_SHARE"
                | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                | "LEAST_BUSY"
                | "LEAST_ELU"
                | "LEAST_USED"
                | "ROUND_ROBIN"
                | "WEIGHTED_ROUND_ROBIN",
            workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions,
        ) => void;
        setWorkerChoiceStrategyOptions: (
            workerChoiceStrategyOptions: WorkerChoiceStrategyOptions,
        ) => boolean;
        start: () => void;
        workerNodes: IWorkerNode<Worker, Data>[];
    }

    Type Parameters

    • Worker extends IWorker

      Type of worker which manages this pool.

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

    Implemented by

    Index

    Properties

    addTaskFunction: (
        name: string,
        fn: TaskFunction<Data, Response> | TaskFunctionObject<Data, Response>,
    ) => Promise<boolean>

    Adds a task function to this pool. If a task function with the same name already exists, it will be overwritten.

    Type declaration

    https://nodejs.org/api/errors.html#class-typeerror If the name parameter is not a string or an empty string.

    https://nodejs.org/api/errors.html#class-typeerror If the fn parameter is not a function or task function object.

    destroy: () => Promise<void>

    Terminates all workers in this pool.

    emitter?: EventEmitterAsyncResource

    Pool event emitter integrated with async resource. The async tracking tooling identifier is poolifier:<PoolType>-<WorkerType>-pool.

    Events that can currently be listened to:

    • 'ready': Emitted when the number of workers created in the pool has reached the minimum size expected and are ready. If the pool is dynamic with a minimum number of workers set to zero, this event is emitted when the pool is started.
    • 'busy': Emitted when the number of workers created in the pool has reached the maximum size expected and are executing concurrently their tasks quota.
    • 'busyEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer executing concurrently their tasks quota.
    • 'full': Emitted when the pool is dynamic and the number of workers created has reached the maximum size expected.
    • 'fullEnd': Emitted when the pool is dynamic and the number of workers created has no longer reached the maximum size expected.
    • 'empty': Emitted when the pool is dynamic with a minimum number of workers set to zero and the number of workers has reached the minimum size expected.
    • 'destroy': Emitted when the pool is destroyed.
    • 'error': Emitted when an uncaught error occurs.
    • 'taskError': Emitted when an error occurs while executing a task.
    • 'backPressure': Emitted when the number of workers created in the pool has reached the maximum size expected and are back pressured (i.e. their tasks queue is full: queue size >= maximum queue size).
    • 'backPressureEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer back pressured (i.e. their tasks queue is no longer full: queue size < maximum queue size).
    enableTasksQueue: (
        enable: boolean,
        tasksQueueOptions?: TasksQueueOptions,
    ) => void

    Enables/disables the worker node tasks queue in this pool.

    Type declaration

      • (enable: boolean, tasksQueueOptions?: TasksQueueOptions): void
      • Parameters

        • enable: boolean

          Whether to enable or disable the worker node tasks queue.

        • OptionaltasksQueueOptions: TasksQueueOptions

          The worker node tasks queue options.

        Returns void

    execute: (
        data?: Data,
        name?: string,
        abortSignal?: AbortSignal,
        transferList?: readonly Transferable[],
    ) => Promise<Response>

    Executes the specified function in the worker constructor with the task data input parameter.

    Type declaration

      • (
            data?: Data,
            name?: string,
            abortSignal?: AbortSignal,
            transferList?: readonly Transferable[],
        ): Promise<Response>
      • Parameters

        • Optionaldata: Data

          The optional task input data for the specified task function. This can only be structured-cloneable data.

        • Optionalname: string

          The optional name of the task function to execute. If not specified, the default task function will be executed.

        • OptionalabortSignal: AbortSignal

          The optional AbortSignal to abort the task.

        • OptionaltransferList: readonly Transferable[]

          The optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

        Returns Promise<Response>

        Promise with a task function response that will be fulfilled when the task is completed.

    hasTaskFunction: (name: string) => boolean

    Whether the specified task function exists in this pool.

    Type declaration

      • (name: string): boolean
      • Parameters

        • name: string

          The name of the task function.

        Returns boolean

        true if the task function exists, false otherwise.

    info: PoolInfo

    Pool information.

    listTaskFunctionsProperties: () => TaskFunctionProperties[]

    Lists the properties of task functions available in this pool.

    Type declaration

    mapExecute: (
        data: Iterable<Data>,
        name?: string,
        abortSignals?: Iterable<AbortSignal, any, any>,
        transferList?: readonly Transferable[],
    ) => Promise<Response[]>

    Executes the specified function in the worker constructor with the tasks data iterable input parameter.

    Type declaration

      • (
            data: Iterable<Data>,
            name?: string,
            abortSignals?: Iterable<AbortSignal, any, any>,
            transferList?: readonly Transferable[],
        ): Promise<Response[]>
      • Parameters

        • data: Iterable<Data>

          The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

        • Optionalname: string

          The optional name of the task function to execute. If not specified, the default task function will be executed.

        • OptionalabortSignals: Iterable<AbortSignal, any, any>

          The optional iterable of AbortSignal to abort the tasks iterable.

        • OptionaltransferList: readonly Transferable[]

          The optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

        Returns Promise<Response[]>

        Promise with an array of task function responses that will be fulfilled when the tasks are completed.

    removeTaskFunction: (name: string) => Promise<boolean>

    Removes a task function from this pool.

    Type declaration

      • (name: string): Promise<boolean>
      • Parameters

        • name: string

          The name of the task function.

        Returns Promise<boolean>

        true if the task function was removed, false otherwise.

    setDefaultTaskFunction: (name: string) => Promise<boolean>

    Sets the default task function in this pool.

    Type declaration

      • (name: string): Promise<boolean>
      • Parameters

        • name: string

          The name of the task function.

        Returns Promise<boolean>

        true if the default task function was set, false otherwise.

    setTasksQueueOptions: (tasksQueueOptions: TasksQueueOptions) => void

    Sets the worker node tasks queue options in this pool.

    Type declaration

    setWorkerChoiceStrategy: (
        workerChoiceStrategy:
            | "FAIR_SHARE"
            | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
            | "LEAST_BUSY"
            | "LEAST_ELU"
            | "LEAST_USED"
            | "ROUND_ROBIN"
            | "WEIGHTED_ROUND_ROBIN",
        workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions,
    ) => void

    Sets the default worker choice strategy in this pool.

    Type declaration

      • (
            workerChoiceStrategy:
                | "FAIR_SHARE"
                | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                | "LEAST_BUSY"
                | "LEAST_ELU"
                | "LEAST_USED"
                | "ROUND_ROBIN"
                | "WEIGHTED_ROUND_ROBIN",
            workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions,
        ): void
      • Parameters

        • workerChoiceStrategy:
              | "FAIR_SHARE"
              | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
              | "LEAST_BUSY"
              | "LEAST_ELU"
              | "LEAST_USED"
              | "ROUND_ROBIN"
              | "WEIGHTED_ROUND_ROBIN"

          The default worker choice strategy.

        • OptionalworkerChoiceStrategyOptions: WorkerChoiceStrategyOptions

          The worker choice strategy options.

        Returns void

    setWorkerChoiceStrategyOptions: (
        workerChoiceStrategyOptions: WorkerChoiceStrategyOptions,
    ) => boolean

    Sets the worker choice strategy options in this pool.

    Type declaration

    start: () => void

    Starts the minimum number of workers in this pool.

    workerNodes: IWorkerNode<Worker, Data>[]

    Pool worker nodes.