X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=docs%2Fclasses%2FAbstractPool.html;h=db1e9aaef353e905457f8eb7ef636127c11c90b9;hb=e159532bc99166fb928b43493814cb80c0c47d54;hp=de299a1ed8daae3e780aedeaff4e484a83dbd7c0;hpb=134c1944c69547534c725e2ba8ee40fc5dacf147;p=poolifier.git diff --git a/docs/classes/AbstractPool.html b/docs/classes/AbstractPool.html index de299a1e..db1e9aae 100644 --- a/docs/classes/AbstractPool.html +++ b/docs/classes/AbstractPool.html @@ -1,1626 +1,231 @@ -AbstractPool | poolifier - v2.6.45
-
- -
-
-
-
- -

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

-
addWorkerNode -afterTaskExecutionHook -afterWorkerNodeSetup -beforeTaskExecutionHook -buildTasksQueueOptions -checkAndEmitDynamicWorkerCreationEvents -checkAndEmitTaskExecutionEvents -checkAndEmitTaskQueuingEvents -checkDynamicPoolSize -checkFilePath -checkMessageWorkerId -checkNumberOfWorkers -checkPoolOptions -checkValidTasksQueueOptions -checkValidWorkerChoiceStrategy -checkValidWorkerChoiceStrategyOptions -chooseWorkerNode -createAndSetupDynamicWorkerNode -createAndSetupWorkerNode -createWorker -dequeueTask -destroy -destroyWorkerNode -enableTasksQueue -enqueueTask -execute -executeTask -flushTasksQueue -flushTasksQueues -getWorkerInfo -getWorkerNodeKeyByWorker -getWorkerNodeKeyByWorkerId -handleTaskExecutionResponse -handleWorkerReadyResponse -hasBackPressure -hasWorkerNodeBackPressure -internalBusy -isMain -listTaskFunctions -redistributeQueuedTasks -registerWorkerMessageListener -removeWorkerNode -sendKillMessageToWorker -sendStartupMessageToWorker -sendStatisticsMessageToWorker -sendToWorker -setTaskStealing -setTasksQueueOptions -setTasksQueueSize -setTasksStealingOnBackPressure -setWorkerChoiceStrategy -setWorkerChoiceStrategyOptions -setupHook -shallCreateDynamicWorker -shallExecuteTask -shallUpdateTaskFunctionWorkerUsage -start -taskStealingOnEmptyQueue -tasksQueueSize -tasksStealingOnBackPressure -unsetTaskStealing -unsetTasksStealingOnBackPressure -updateEluWorkerUsage -updateRunTimeWorkerUsage -updateTaskStatisticsWorkerUsage -updateTaskStolenStatisticsWorkerUsage -updateWaitTimeWorkerUsage -workerListener -
-
-

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.

+AbstractPool | poolifier - v3.1.28

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 (view full)

Implements

Constructors

Properties

Accessors

Methods

addTaskFunction +addWorkerNode +afterTaskExecutionHook +afterWorkerNodeSetup +beforeTaskExecutionHook +buildTasksQueueOptions +cannotStealTask +checkAndEmitDynamicWorkerCreationEvents +checkAndEmitEmptyEvent +checkAndEmitReadyEvent +checkAndEmitTaskExecutionEvents +checkAndEmitTaskQueuingEvents +checkMessageWorkerId +checkMinimumNumberOfWorkers +checkPoolOptions +checkPoolType +checkValidWorkerChoiceStrategyOptions +chooseWorkerNode +createAndSetupDynamicWorkerNode +createAndSetupWorkerNode +createWorkerNode +deleteTaskFunctionWorkerUsages +dequeueTask +deregisterWorkerMessageListener +destroy +destroyWorkerNode +enableTasksQueue +enqueueTask +execute +executeTask +flagWorkerNodeAsNotReady +flushTasksQueue +flushTasksQueues +getWorkerInfo +getWorkerNodeKeyByWorkerId +handleTask +handleTaskExecutionResponse +handleWorkerNodeBackPressureEvent +handleWorkerNodeIdleEvent +handleWorkerReadyResponse +hasBackPressure +hasTaskFunction +initializeEventEmitter +internalBusy +isMain +isWorkerNodeBusy +listTaskFunctionNames +redistributeQueuedTasks +registerOnceWorkerMessageListener +registerWorkerMessageListener +removeTaskFunction +removeWorkerNode +resetTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage +resetTaskSequentiallyStolenStatisticsWorkerUsage +sendKillMessageToWorker +sendStartupMessageToWorker +sendStatisticsMessageToWorker +sendTaskFunctionOperationToWorker +sendTaskFunctionOperationToWorkers +sendToWorker +setDefaultTaskFunction +setTaskStealing +setTasksQueueOptions +setTasksQueueSize +setTasksStealingOnBackPressure +setWorkerChoiceStrategy +setWorkerChoiceStrategyOptions +setupHook +shallCreateDynamicWorker +shallExecuteTask +shallUpdateTaskFunctionWorkerUsage +start +startMinimumNumberOfWorkers +tasksQueueSize +unsetTaskStealing +unsetTasksStealingOnBackPressure +updateTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage +updateTaskSequentiallyStolenStatisticsWorkerUsage +updateTaskStolenStatisticsWorkerUsage +workerMessageListener +workerNodeStealTask +

Constructors

Properties

destroying: boolean

Whether the pool is destroying or not.

+
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.
  • +
  • '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 is set to zero, this event is emitted when at least one dynamic worker is 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.
  • +
  • '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 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:

+
filePath: string

Path to the worker file.

+
maximumNumberOfWorkers?: number

Maximum number of workers that this pool manages.

+
minimumNumberOfWorkers: number

Minimum number of workers that this pool manages.

+

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

-
- -
readyEventEmitted: boolean

Whether the pool ready event has been emitted or not.

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

+
taskFunctions: Map<string, TaskFunction<Data, Response>>

The task functions added at runtime map:

+
    +
  • key: The task function name.
  • +
  • value: The task function itself.
  • +
+
workerChoiceStrategyContext?: WorkerChoiceStrategyContext<Worker, Data, Response>

Worker choice strategy context referencing a worker choice algorithm implementation.

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

Pool worker nodes.

+

Accessors

  • get busy(): boolean
  • Whether the pool is busy or not.

    The pool busyness boolean status.

    -
    -

    Returns boolean

    -
-
- -
  • get full(): boolean
  • Whether the pool is full or not.

    The pool filling boolean status.

    -
    -

    Returns boolean

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

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

    -
    -

    Returns "fixed" | "dynamic"

    -
-
- -
    -
  • get utilization(): number
  • -
  • -

    The approximate pool utilization.

    -
    -

    Returns number

    The pool utilization.

    - -
-
- -
-
-

Methods

-
- -
-
- -
    - -
  • -

    Hook executed after the worker task execution. +

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

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

    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.

    +

    Parameters

    • workerNodeKey: number

      The worker node key.

      +
    • task: Task<Data>

      The task to execute.

      +

    Returns void

  • Parameters

    • minimumNumberOfWorkers: undefined | number

    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 worker information given its worker node key.

    -
    -
    -

    Parameters

    -
      -
    • -
      workerNodeKey: number
      -

      The worker node key.

      -
      -
    -

    Returns WorkerInfo

    The worker information.

    - -
-
- -
    - -
  • -

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

    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.

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

      +

    Returns void

  • Terminates the worker node given its worker node key.

    +

    Parameters

    • workerNodeKey: number

      The worker node key.

      +

    Returns Promise<void>

  • 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 worker information given its worker node key.

    +

    Parameters

    • workerNodeKey: number

      The worker node key.

      +

    Returns undefined | WorkerInfo

    The worker information.

    +
  • Gets the worker node key given its worker id.

    +

    Parameters

    • workerId: undefined | number

      The worker id.

      +

    Returns number

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

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

    +

    Returns boolean

    Worker nodes busyness boolean status.

    +
  • Registers once 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.

      +

    Returns void

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

      +

    Returns void

  • Parameters

    • workerNodeKey: number
    • taskName: string

    Returns 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

  • 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

-
\ No newline at end of file +

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

  • Parameters

    • workerNodeKey: number

    Returns void

  • Parameters

    • workerNodeKey: number
    • taskName: string

    Returns void

Generated using TypeDoc

\ No newline at end of file