refactor: use object destructuration at handling task execution response
[poolifier.git] / docs / api.md
index 6f66d038c1db08c7936f8edb1630b41d53a8460d..3a62d7635c754ddabb9e9d0766f897ec7c4f78bc 100644 (file)
@@ -5,8 +5,9 @@
 - [Pool](#pool)
   - [`pool = new FixedThreadPool/FixedClusterPool(numberOfThreads/numberOfWorkers, filePath, opts)`](#pool--new-fixedthreadpoolfixedclusterpoolnumberofthreadsnumberofworkers-filepath-opts)
   - [`pool = new DynamicThreadPool/DynamicClusterPool(min, max, filePath, opts)`](#pool--new-dynamicthreadpooldynamicclusterpoolmin-max-filepath-opts)
-  - [`pool.execute(data, name)`](#poolexecutedata-name)
+  - [`pool.execute(data, name, transferList)`](#poolexecutedata-name-transferlist)
   - [`pool.destroy()`](#pooldestroy)
+  - [`pool.listTaskFunctions()`](#poollisttaskfunctions)
   - [`PoolOptions`](#pooloptions)
     - [`ThreadPoolOptions extends PoolOptions`](#threadpooloptions-extends-pooloptions)
     - [`ClusterPoolOptions extends PoolOptions`](#clusterpooloptions-extends-pooloptions)
 `filePath` (mandatory) Path to a file with a worker implementation  
 `opts` (optional) An object with the pool options properties described below
 
-### `pool.execute(data, name)`
+### `pool.execute(data, name, transferList)`
 
 `data` (optional) An object that you want to pass to your worker implementation  
-`name` (optional) A string with the task function name that you want to execute on the worker. Default: `'default'`
+`name` (optional) A string with the task function name that you want to execute on the worker. Default: `'default'`  
+`transferList` (optional) An array of transferable objects that you want to transfer to your [worker_threads](https://nodejs.org/api/worker_threads.html) worker implementation
 
 This method is available on both pool implementations and returns a promise with the task function execution response.
 
@@ -44,13 +46,17 @@ This method is available on both pool implementations and returns a promise with
 
 This method is available on both pool implementations and will call the terminate method on each worker.
 
+### `pool.listTaskFunctions()`
+
+This method is available on both pool implementations and returns an array of the task function names.
+
 ### `PoolOptions`
 
 An object with these properties:
 
+- `onlineHandler` (optional) - A function that will listen for online event on each worker
 - `messageHandler` (optional) - A function that will listen for message event on each worker
 - `errorHandler` (optional) - A function that will listen for error event on each worker
-- `onlineHandler` (optional) - A function that will listen for online event on each worker
 - `exitHandler` (optional) - A function that will listen for exit event on each worker
 - `workerChoiceStrategy` (optional) - The worker choice strategy to use in this pool:
 
@@ -107,17 +113,20 @@ An object with these properties:
 `taskFunctions` (mandatory) The task function or task functions object `{ name_1: fn_1, ..., name_n: fn_n }` that you want to execute on the worker  
 `opts` (optional) An object with these properties:
 
+- `killBehavior` (optional) - Dictates if your worker will be deleted in case a task is active on it.  
+  **KillBehaviors.SOFT**: If `currentTime - lastActiveTime` is greater than `maxInactiveTime` but a task is still executing or queued, then the worker **won't** be deleted.  
+  **KillBehaviors.HARD**: If `currentTime - lastActiveTime` is greater than `maxInactiveTime` but a task is still executing or queued, then the worker will be deleted.  
+  This option only apply to the newly created workers.  
+  Default: `KillBehaviors.SOFT`
+
 - `maxInactiveTime` (optional) - Maximum waiting time in milliseconds for tasks on newly created workers. After this time newly created workers will die.  
   The last active time of your worker will be updated when it terminates a task.  
   If `killBehavior` is set to `KillBehaviors.HARD` this value represents also the timeout for the tasks that you submit to the pool, when this timeout expires your tasks is interrupted before completion and removed. The worker is killed if is not part of the minimum size of the pool.  
   If `killBehavior` is set to `KillBehaviors.SOFT` your tasks have no timeout and your workers will not be terminated until your task is completed.  
   Default: `60000`
 
-- `killBehavior` (optional) - Dictates if your worker will be deleted in case a task is active on it.  
-  **KillBehaviors.SOFT**: If `currentTime - lastActiveTime` is greater than `maxInactiveTime` but a task is still executing or queued, then the worker **won't** be deleted.  
-  **KillBehaviors.HARD**: If `currentTime - lastActiveTime` is greater than `maxInactiveTime` but a task is still executing or queued, then the worker will be deleted.  
-  This option only apply to the newly created workers.  
-  Default: `KillBehaviors.SOFT`
+- `killHandler` (optional) - A function that will be called when a worker is killed.  
+  Default: `() => {}`
 
 #### `YourWorker.hasTaskFunction(name)`