Class AbstractPool<Worker, Data, Response>Abstract

Base class that implements some shared logic for all poolifier pools.

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 serializable data.

  • Response = unknown

    Type of execution response. This can only be serializable data.

Hierarchy

Implements

  • IPool<Worker, Data, Response>

Constructors

  • Constructs a new poolifier pool.

    Type Parameters

    • Worker extends IWorker<Worker>

    • Data = unknown

    • Response = unknown

    Parameters

    • numberOfWorkers: number

      Number of workers that this pool should manage.

    • filePath: string

      Path to the worker file.

    • opts: PoolOptions<Worker>

      Options for the pool.

    Returns AbstractPool<Worker, Data, Response>

Properties

emitter?: PoolEmitter

Emitter on which events can be listened to.

Events that can currently be listened to:

  • 'full': Emitted when the pool is dynamic and full.
  • 'busy': Emitted when the pool is busy.
filePath: string

Path to the worker file.

numberOfWorkers: number

Number of workers that this pool should manage.

opts: PoolOptions<Worker>

Options for the pool.

promiseResponseMap: Map<string, PromiseResponseWrapper<Worker, Response>> = ...

The execution response promise map.

  • key: The message id of each submitted task.
  • value: An object that contains the worker, the execution response promise resolve and reject callbacks.

When we receive a message from the worker, we get a map entry with the promise resolve/reject bound to the message id.

workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

Worker choice strategy context referencing a worker choice algorithm implementation.

Default to a round robin algorithm.

workerNodes: WorkerNode<Worker, Data>[] = []

Pool worker nodes.

Accessors

Methods

  • Hook executed after the worker task execution. Can be overridden.

    Parameters

    • worker: Worker

      The worker.

    • message: MessageValue<Response, unknown>

      The received message.

    Returns void

  • Function that can be hooked up when a worker has been newly created and moved to the pool worker nodes.

    Can be used to update the maxListeners or binding the main-worker<->worker connection if not bind by default.

    Parameters

    • worker: Worker

      The newly created worker.

    Returns void

  • Hook executed before the worker task execution. Can be overridden.

    Parameters

    • workerNodeKey: number

      The worker node key.

    Returns void

  • Parameters

    • workerChoiceStrategy: "ROUND_ROBIN" | "LESS_USED" | "LESS_BUSY" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN"

    Returns void

  • Chooses a worker node for the next task.

    The default uses a round robin algorithm to distribute the load.

    Returns

    [worker node key, worker node].

    Returns [number, WorkerNode<Worker, Data>]

  • Creates a new worker and sets it up completely in the pool worker nodes.

    Returns

    New, completely set up worker.

    Returns Worker

  • Shutdowns the given worker.

    Parameters

    • worker: Worker

      A worker within workerNodes.

    Returns void | Promise<void>

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

    Parameters

    • enable: boolean

      Whether to enable or disable the worker tasks queue.

    • Optional tasksQueueOptions: TasksQueueOptions

      The worker tasks queue options.

    Returns void

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

    Returns

    Promise that will be fulfilled when the task is completed.

    Parameters

    • Optional data: Data

      The task input data for the specified worker function. This can only be serializable data.

    Returns Promise<Response>

  • 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.

    Returns

    A worker node key if there is one, -1 otherwise.

    Returns number

  • Gets the given worker its worker node key.

    Returns

    The worker node key if the worker is found in the pool worker nodes, -1 otherwise.

    Parameters

    • worker: Worker

      The worker.

    Returns number

  • Gets the given worker its tasks usage in the pool.

    Throws

    Error if the worker is not found in the pool worker nodes.

    Returns

    The worker tasks usage.

    Parameters

    • worker: Worker

      The worker.

    Returns undefined | TasksUsage

  • Pushes the given worker in the pool worker nodes.

    Returns

    The worker nodes length.

    Parameters

    • worker: Worker

      The worker.

    Returns number

  • Registers a listener callback on the given worker.

    Type Parameters

    • Message

    Parameters

    • worker: Worker

      The worker which should register a listener.

    • listener: ((message) => void)

      The message listener callback.

        • (message): void
        • Parameters

          Returns void

    Returns void

  • Removes the given worker from the pool worker nodes.

    Parameters

    • worker: Worker

      The worker.

    Returns void

  • Sends a message to the given worker.

    Parameters

    • worker: Worker

      The worker which should receive the message.

    • message: MessageValue<Data, unknown>

      The message.

    Returns void

  • Sets the worker choice strategy in this pool.

    Parameters

    • workerChoiceStrategy: "ROUND_ROBIN" | "LESS_USED" | "LESS_BUSY" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN"

      The worker choice strategy.

    • Optional workerChoiceStrategyOptions: WorkerChoiceStrategyOptions

      The worker choice strategy options.

    Returns void

  • Sets the given worker in the pool worker nodes.

    Parameters

    • workerNodeKey: number

      The worker node key.

    • worker: Worker

      The worker.

    • tasksUsage: TasksUsage

      The worker tasks usage.

    • tasksQueue: Task<Data>[]

      The worker task queue.

    Returns void

  • Sets the given worker node its tasks usage in the pool.

    Parameters

    • workerNode: WorkerNode<Worker, Data>

      The worker node.

    • tasksUsage: TasksUsage

      The worker node tasks usage.

    Returns void

  • Setup hook to execute code before worker node are created in the abstract constructor. Can be overridden

    Returns void

  • This function is the listener registered for each worker message.

    Returns

    The listener function to execute when a message is received from a worker.

    Returns ((message) => void)

      • (message): void
      • This function is the listener registered for each worker message.

        Returns

        The listener function to execute when a message is received from a worker.

        Parameters

        Returns void

Generated using TypeDoc