repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #1514 from poolifier/combined-prs-branch
[poolifier.git]
/
src
/
pools
/
pool.ts
diff --git
a/src/pools/pool.ts
b/src/pools/pool.ts
index ddd4c2a047f9563e2ac8911f6bac0a4ec063ff9e..af80bcfbebcee352f2dc0c09dc6a6754e75ec0bf 100644
(file)
--- a/
src/pools/pool.ts
+++ b/
src/pools/pool.ts
@@
-1,5
+1,5
@@
-import
{ EventEmitter } from 'node:event
s'
-import
{ type TransferListItem } from 'node:worker_thread
s'
+import
type { TransferListItem } from 'node:worker_thread
s'
+import
type { EventEmitterAsyncResource } from 'node:event
s'
import type { TaskFunction } from '../worker/task-functions'
import type {
ErrorHandler,
import type { TaskFunction } from '../worker/task-functions'
import type {
ErrorHandler,
@@
-34,11
+34,6
@@
export const PoolTypes = Object.freeze({
*/
export type PoolType = keyof typeof PoolTypes
*/
export type PoolType = keyof typeof PoolTypes
-/**
- * Pool events emitter.
- */
-export class PoolEmitter extends EventEmitter {}
-
/**
* Enumeration of pool events.
*/
/**
* Enumeration of pool events.
*/
@@
-115,13
+110,13
@@
export interface TasksQueueOptions {
*/
readonly concurrency?: number
/**
*/
readonly concurrency?: number
/**
- * Whether to enable task stealing.
+ * Whether to enable task stealing
on empty queue
.
*
* @defaultValue true
*/
readonly taskStealing?: boolean
/**
*
* @defaultValue true
*/
readonly taskStealing?: boolean
/**
- * Whether to enable tasks stealing
on
back pressure.
+ * Whether to enable tasks stealing
under
back pressure.
*
* @defaultValue true
*/
*
* @defaultValue true
*/
@@
-136,24
+131,32
@@
export interface TasksQueueOptions {
export interface PoolOptions<Worker extends IWorker> {
/**
* A function that will listen for online event on each worker.
export interface PoolOptions<Worker extends IWorker> {
/**
* A function that will listen for online event on each worker.
+ *
+ * @defaultValue `() => {}`
*/
onlineHandler?: OnlineHandler<Worker>
/**
* A function that will listen for message event on each worker.
*/
onlineHandler?: OnlineHandler<Worker>
/**
* A function that will listen for message event on each worker.
+ *
+ * @defaultValue `() => {}`
*/
messageHandler?: MessageHandler<Worker>
/**
* A function that will listen for error event on each worker.
*/
messageHandler?: MessageHandler<Worker>
/**
* A function that will listen for error event on each worker.
+ *
+ * @defaultValue `() => {}`
*/
errorHandler?: ErrorHandler<Worker>
/**
* A function that will listen for exit event on each worker.
*/
errorHandler?: ErrorHandler<Worker>
/**
* A function that will listen for exit event on each worker.
+ *
+ * @defaultValue `() => {}`
*/
exitHandler?: ExitHandler<Worker>
/**
* Whether to start the minimum number of workers at pool initialization.
*
*/
exitHandler?: ExitHandler<Worker>
/**
* Whether to start the minimum number of workers at pool initialization.
*
- * @defaultValue
fals
e
+ * @defaultValue
tru
e
*/
startWorkers?: boolean
/**
*/
startWorkers?: boolean
/**
@@
-171,7
+174,7
@@
export interface PoolOptions<Worker extends IWorker> {
*/
restartWorkerOnError?: boolean
/**
*/
restartWorkerOnError?: boolean
/**
- * Pool events emission.
+ * Pool events
integrated with async resource
emission.
*
* @defaultValue true
*/
*
* @defaultValue true
*/
@@
-219,7
+222,8
@@
export interface IPool<
*/
readonly hasWorkerNodeBackPressure: (workerNodeKey: number) => boolean
/**
*/
readonly hasWorkerNodeBackPressure: (workerNodeKey: number) => boolean
/**
- * Emitter on which events can be listened to.
+ * Event emitter integrated with async resource on which events can be listened to.
+ * The async tracking tooling identifier is `poolifier:<PoolType>-<WorkerType>-pool`.
*
* Events that can currently be listened to:
*
*
* Events that can currently be listened to:
*
@@
-231,7
+235,7
@@
export interface IPool<
* - `'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).
*/
* - `'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).
*/
- readonly emitter?:
PoolEmitter
+ readonly emitter?:
EventEmitterAsyncResource
/**
* Executes the specified function in the worker constructor with the task data input parameter.
*
/**
* Executes the specified function in the worker constructor with the task data input parameter.
*
@@
-265,12
+269,14
@@
export interface IPool<
* If a task function with the same name already exists, it will be overwritten.
*
* @param name - The name of the task function.
* If a task function with the same name already exists, it will be overwritten.
*
* @param name - The name of the task function.
- * @param
taskFunctio
n - The task function.
+ * @param
f
n - The task function.
* @returns `true` if the task function was added, `false` otherwise.
* @returns `true` if the task function was added, `false` otherwise.
+ * @throws {@link https://nodejs.org/api/errors.html#class-typeerror} If the `name` parameter is not a string or an empty string.
+ * @throws {@link https://nodejs.org/api/errors.html#class-typeerror} If the `fn` parameter is not a function.
*/
readonly addTaskFunction: (
name: string,
*/
readonly addTaskFunction: (
name: string,
-
taskFunctio
n: TaskFunction<Data, Response>
+
f
n: TaskFunction<Data, Response>
) => Promise<boolean>
/**
* Removes a task function from this pool.
) => Promise<boolean>
/**
* Removes a task function from this pool.