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 structured-cloneable data.

  • Response = unknown

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

Hierarchy

Implements

  • IPool<Worker, Data, Response>

Constructors

Properties

Accessors

Methods

Constructors

  • Constructs a new poolifier pool.

    Type Parameters

    • Worker extends IWorker

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

  • 'ready': Emitted when the number of workers created in the pool has reached the minimum size expected and are ready.
  • 'busy': Emitted when the number of workers created in the pool has reached the maximum size expected and are executing concurrently their tasks quota.
  • 'full': Emitted when the pool is dynamic and the number of workers created has reached the maximum 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 all worker nodes have back pressure (i.e. their tasks queue is full: queue size >= maximum queue size).
filePath: string

Path to the worker file.

max?: number

Dynamic pool maximum size property placeholder.

numberOfWorkers: number

Number of workers that this pool should manage.

opts: PoolOptions<Worker>

Options for the pool.

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

The task 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.

startTimestamp: number

The start timestamp of the pool.

started: boolean

Whether the pool is started or not.

starting: boolean

Whether the pool is starting or not.

workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

Worker choice strategy context referencing a worker choice algorithm implementation.

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

Pool worker nodes.

Accessors

  • get type(): "fixed" | "dynamic"
  • The pool type.

    If it is 'dynamic', it provides the max property.

    Returns "fixed" | "dynamic"

Methods

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

    Parameters

    • workerNodeKey: number

      The worker node key.

    • message: MessageValue<Response, unknown>

      The received message.

    Returns void

  • Method hooked up after a worker node has been newly created. Can be overridden.

    Parameters

    • workerNodeKey: number

      The newly created worker node key.

    Returns void

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

    Parameters

    • workerNodeKey: number

      The worker node key.

    • task: Task<Data>

      The task to execute.

    Returns void

  • Parameters

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

    Returns void

  • Chooses a worker node for the next task.

    The default worker choice strategy uses a round robin algorithm to distribute the tasks.

    Returns number

    The chosen worker node key

  • Creates a new, completely set up dynamic worker node.

    Returns number

    New, completely set up dynamic worker node key.

  • Creates a new, completely set up worker node.

    Returns number

    New, completely set up worker node key.

  • Terminates the worker node given its worker node key.

    Parameters

    • workerNodeKey: number

      The worker node key.

    Returns Promise<void>

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

    Parameters

    • enable: boolean

      Whether to enable or disable the worker node tasks queue.

    • Optional tasksQueueOptions: TasksQueueOptions

      The worker node tasks queue options.

    Returns void

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

    Parameters

    • Optional data: Data

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

    • Optional name: string

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

    • Optional transferList: TransferListItem[]

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

    Returns Promise<Response>

    Promise that will be fulfilled when the task is completed.

  • Executes the given task on the worker given its worker node key.

    Parameters

    • workerNodeKey: number

      The worker node key.

    • task: Task<Data>

      The task to execute.

    Returns void

  • Gets the given worker its worker node key.

    Parameters

    • worker: Worker

      The worker.

    Returns number

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

  • Gets the worker node key given its worker id.

    Parameters

    • workerId: number

      The worker id.

    Returns number

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

  • Internal

    Whether the worker node has back pressure (i.e. its tasks queue is full).

    Parameters

    • workerNodeKey: number

      The worker node key.

    Returns boolean

    true if the worker node has back pressure, false otherwise.

  • Whether worker nodes are executing concurrently their tasks quota or not.

    Returns boolean

    Worker nodes busyness boolean status.

  • Registers a listener callback on the worker given its worker node key.

    Type Parameters

    • Message

    Parameters

    • workerNodeKey: number

      The worker node key.

    • 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

  • Parameters

    • workerNodeKey: number
    • workerId: number

    Returns Promise<void>

  • Sends the startup message to worker given its worker node key.

    Parameters

    • workerNodeKey: number

      The worker node key.

    Returns void

  • Sends the statistics message to worker given its worker node key.

    Parameters

    • workerNodeKey: number

      The worker node key.

    Returns void

  • Sends a message to worker given its worker node key.

    Parameters

    • workerNodeKey: number

      The worker node key.

    • message: MessageValue<Data, unknown>

      The message.

    • Optional transferList: TransferListItem[]

      The optional array of transferable objects.

    Returns void

  • Sets the worker choice strategy in this pool.

    Parameters

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

      The worker choice strategy.

    • Optional workerChoiceStrategyOptions: WorkerChoiceStrategyOptions

      The worker choice strategy options.

    Returns void

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

    Returns void

  • Conditions for dynamic worker creation.

    Returns boolean

    Whether to create a dynamic worker or not.

  • Whether the worker node shall update its task function worker usage or not.

    Parameters

    • workerNodeKey: number

      The worker node key.

    Returns boolean

    true if the worker node shall update its task function worker usage, false otherwise.

  • Parameters

    • workerNodeKey: number
    • taskName: string

    Returns void

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

    Returns ((message) => void)

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

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

        Parameters

        Returns void

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

Generated using TypeDoc