From cb9d18cc44c7be166b31dbdf2197563a3f713175 Mon Sep 17 00:00:00 2001 From: Documentation Bot Date: Thu, 24 Oct 2024 16:09:11 +0000 Subject: [PATCH] docs: publish documentation --- docs/assets/search.js | 2 +- docs/classes/AbstractPool.html | 88 +++++++++---------- docs/classes/AbstractWorker.html | 53 +++++------ docs/classes/CircularBuffer.html | 16 ++-- docs/classes/ClusterWorker.html | 53 +++++------ docs/classes/DynamicClusterPool.html | 88 +++++++++---------- docs/classes/DynamicThreadPool.html | 88 +++++++++---------- docs/classes/FixedClusterPool.html | 88 +++++++++---------- docs/classes/FixedThreadPool.html | 88 +++++++++---------- docs/classes/PriorityQueue.html | 24 ++--- docs/classes/ThreadWorker.html | 53 +++++------ .../WorkerChoiceStrategiesContext.html | 24 ++--- docs/functions/availableParallelism.html | 4 +- docs/hierarchy.html | 2 +- docs/index.html | 4 +- ...tLoopUtilizationMeasurementStatistics.html | 6 +- docs/interfaces/FixedQueueNode.html | 6 +- docs/interfaces/IFixedQueue.html | 24 ++--- docs/interfaces/IPool.html | 36 ++++---- docs/interfaces/IWorker.html | 46 +++++----- docs/interfaces/IWorkerChoiceStrategy.html | 18 ++-- docs/interfaces/IWorkerNode.html | 68 +++++++------- docs/interfaces/MeasurementOptions.html | 6 +- docs/interfaces/MeasurementStatistics.html | 16 ++-- .../MeasurementStatisticsRequirements.html | 10 +-- docs/interfaces/MessageValue.html | 44 +++++----- docs/interfaces/PoolInfo.html | 20 ++--- docs/interfaces/PoolOptions.html | 32 +++---- docs/interfaces/PromiseResponseWrapper.html | 12 +-- docs/interfaces/StrategyData.html | 6 +- docs/interfaces/StrategyPolicy.html | 8 +- docs/interfaces/Task.html | 18 ++-- docs/interfaces/TaskFunctionObject.html | 10 +-- .../TaskFunctionOperationResult.html | 6 +- docs/interfaces/TaskFunctionProperties.html | 10 +-- docs/interfaces/TaskPerformance.html | 12 +-- docs/interfaces/TaskStatistics.html | 18 ++-- .../TaskStatisticsRequirements.html | 10 +-- docs/interfaces/TasksQueueOptions.html | 16 ++-- .../WorkerChoiceStrategyOptions.html | 14 +-- docs/interfaces/WorkerError.html | 16 ++-- docs/interfaces/WorkerInfo.html | 24 ++--- docs/interfaces/WorkerNodeEventDetail.html | 6 +- docs/interfaces/WorkerNodeOptions.html | 6 +- docs/interfaces/WorkerOptions.html | 10 +-- docs/interfaces/WorkerStatistics.html | 8 +- docs/interfaces/WorkerUsage.html | 12 +-- docs/types/ClusterPoolOptions.html | 4 +- docs/types/ErrorHandler.html | 4 +- docs/types/EventHandler.html | 4 +- docs/types/ExitHandler.html | 4 +- docs/types/KillBehavior.html | 4 +- docs/types/KillHandler.html | 4 +- docs/types/Measurement.html | 4 +- docs/types/MessageHandler.html | 4 +- docs/types/OnlineHandler.html | 4 +- docs/types/PoolEvent.html | 4 +- docs/types/PoolType.html | 4 +- docs/types/TaskAsyncFunction.html | 4 +- docs/types/TaskFunction.html | 4 +- docs/types/TaskFunctions.html | 4 +- docs/types/TaskSyncFunction.html | 4 +- docs/types/ThreadPoolOptions.html | 4 +- docs/types/WorkerChoiceStrategy.html | 4 +- docs/types/WorkerType.html | 4 +- docs/types/Writable.html | 4 +- docs/variables/KillBehaviors.html | 4 +- docs/variables/Measurements.html | 4 +- docs/variables/PoolEvents.html | 4 +- docs/variables/PoolTypes.html | 4 +- docs/variables/WorkerChoiceStrategies.html | 4 +- docs/variables/WorkerTypes.html | 4 +- 72 files changed, 667 insertions(+), 662 deletions(-) diff --git a/docs/assets/search.js b/docs/assets/search.js index cfb154dc..3758dc61 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAA8WdXZMjt5Gu/8qJntv2mPgkqTuv7I1VnPVaR9KuLyYUDqq7eoY7bLLNj5Fkh//7iQKIaiDrTVRWsWZ0NR3DAvAWKvGVTwL4593x8PPp7qt3/7z7uN0/3n2l9Or+br95bu6+uvt6e3y47DbHf7s8PTXHu/u7y3F399Xdw25zOjWn35c/v/1wft7d3adf7766u/vXfcrVKd3l+nDYn87Hy8P5IMryTfl8lv393cvm2OzPfaWvBauFtl3Jp+0/GlGR1wdHlqUX9rXumueX86+iwtKTt5T2dNntRIVdH7ylrPfNWVRUfO6Wkl4uspLic7eUdD784XjcyL7X67NjbTFrWn/46XQ+bh7O3x4O/Q+X/zhLs+plKGpUhUamSb0cD8/bU/Ndc3o57E/NnzcvgsJholcN59Pj77an370cD+fm4dw8jtX08+H4sTl+/eGwfWi+Px835+b9tjl9fdifm1/6BtWXN5T+JqWF2cWS/tycTpv3zX9uT+dmD/pZTmE/3Xx12Dxvz2eRltcnp1tRfJ//Ojw2J/Hbp6enl/q83W+fL8//dXn+qTn+5emvIVuJADbhfPX/tN01327OHwRqskfnK//wcpbUxPWx+cp93vwy8ZtwCedrrZunc3P8YXP6+KdfmofLeXvY/8fh8FGgjU04s7a/dg3j++Z8kfTETLL5dP3UPB2OzZRK41POp+7hQ/Pw8Q/7xz89b89//HW/ed4+xMr4+ths2hL/9KnZixqCPKcvoP6PTRzbZ3kBlNmM79BWT/OH/WMwvaLg1iAlwgdz+Fxqb5D5mfQ9NsfmfTsduLbp8TOL4RzmVHs6Hw+/jqpGlGY+RU+7zfvXrP9w+q/D+btm89hfF4BRmE86p77L6UPbJZ7+36W5SOqrn2I+Ne+bc3zjb/ZPB4EW+vx8Srb7c3Pcb3b/tnn4+O2xOZ0uR0nlMMk+g67LSWJD5PEZdZz+vNnuJQrSg/OVnfqTv+wfmqm9kiSP+RXfqvbzKz01+8fvz5vj+fJyLeaHQyxVILOaeF6NI1V9Jh3ny4tw7pk/O6OCD5vdLswHm2KaIhHEJ51xDfH42I4U/37Zh9meZPnQSzFqNY5mA/I5wE2lNfvNT7tm1FAKktxQfljTiIrtnpxe2ofNaeSX7aeYXvpuezrnmZ2+PR5emuN5K/L21FNPV/W8efmT+CMUD08v89g8Hz41Iz8FTDRdw6k5/7F52lx255E62IQ3aXltT395CZ9XpgQlu0nHX/tOX0lfxKecXc2o+qlncIO2dsIgkXB9blxJXiv76gv8adxs/qc5Z/FEiWz+/tMc8/ay5K1sabWlK6rxJZ1/fZHU8vWxOd/xZ+ksKD74O32zxzkDcdfp1Ne7Sztlhziu/8gsUI7JVoTmgOqZXZysupkdnTO8ybC7c/TLTHd6yt9HvBzg1N+8KKhrHdEZcwondcmjVKGOmVUzpnseowJ2nZyKUR2o3JrGun45ebc4gP/P9T+2+w/NcTv5VRhvFadY4LOaSdh4Vxan+TaH1syvM8+r/GavMcIJxvak01xhM77AJMlfViTnPuMVSpxoN8gTzSI5dT9/zpobGyLFiRwZKDWT4HHxU/UKnhJFNZPFyoKr6vK/THcmirzihKL4qzntAEdl1autH5s1jyJhxBYnbkLc1kwflQ3n4qSKgrpmEgdjvThhgxFfM4kSBoKxn3p8ONhM3Y4wSowTPiFWbE7hQyFkVdljAslmEi2NL2PXhBOizGaSPjb0iXVi3BAA9Vle5eZ3+LLih8OQ+LXymGCkmeSKY5TYoWVKpNJs4usBTLxmeRjTTFLr0U2cUHmM01zOEknoE+s6GRsANbfoMe47cXTUXOPhQDgEOxRWgiJm7bHG9lOfQclgGAW7aqkFU8ykjaH7rCQA+OdRMhR+wSmqBWHMo2xMaAanUhqgMY/iStgGvxaAwRtzOVEHQzp4z2k1sGM2v50k3KPixBsK+phN53AoSEVlPSBkNo2iMJGKzMFgkc+qdEK9SgNJZtINw0tYeb0gk7mcyTDsgp+Y4KnelLpYL5V7DR/InqKfrsWIp9/3H6iGJuSBD/++/aV5rIU90AdmCXqAmYpCHnp6Zw54YJTNHO5w81sMBzuMfJHpoQ7SdxmLpvELzLUzSaqaodBY3Mh9E1IN44Ezljff/omxyudQ/WUUj8DIWO4M+ynGaJ2g7jPq4eAwJ2bs/gqxEmlQFSPs1pCqms4RAVVY3aRwqhGKkDeGUTImlEquAAZSYQWjwqjkCpgoAqxBEEMgVDE2YADrmTNcQCp2XLBArR5nDxWQ9hmyQIGa9NnCBKS1zgUJYJFjQwTGfXscIFCrrnHhAVI1wuAALGzu0ACpaDYwAMu8PSxAKgwGBWBRt4UEiD+vLCCA+bwzhwNIuxZhMAAWPXcowCjRQ4EAFcmzhQFIBUuDAJi5zNwhAOI1/sgAAGZh/7nw/7TXuFH/lxQ+DP45T8Rs2F8qVQz9mWFjduQvF14H/pzemXC/VGYd9mORM6F+sT9KAvoZ79SsmH+0YPmych7ELx7nBgA/M8RNxPsje6VxfdHsKgbBPrPSmIr1xboY9svIGYl9pSqGgD5WMxXnS1WNgflY4RwoX6q2AvK5OfxojC/3Vg9CfM5FPRnhj/CtSgA+62i9Bd+P0DgM71mF09H9CH0icM9KvAnb36hydH3OgezFmiGwZ6SNwvVyny2E9dwEYwSqrylwviv+m4KehynM0+ahOf3+m0FqXjg4uOkIzFF89NI3RLl3zrxq/9vfCpe7qKi3XaJKiW+pPual6WwHKxg68WmGl7wWcX05csZE//WSIqF/Fpc5dHQ2fa2yCG6GxpQlPb1qhrqkZaVKtQOV2tPIvTqZNzAqBg5smuNFYxHp/fzQ+10VMa/FzSpx2dITumZ4TVJUet3VwOtShcxrF903FlA93qbaSiRzYlzmlHPHZqjrSrGp3tVioOJr0lnvem82jvUJTkKboRZeS+leeqhHzoQx71iZ5WMVI05em+Gd+6V17z7UcQKhTB0MrCawspEnv81QF7jErj6GOlpGMF8n/OqF1Sc/gW6e+uiV19XGUD8MxfJ1UV0psfJGnYI3T42gIrv521AfyUkeVy9ia5lyHt/nqyViQXqobx14Aa7OirUhI7B6TuAcNdAW0L3oUEca5YwId8CFSm6ooe9GY7/bn0NALgn57v6/urLMF6htim+YSVb6Tb5MhXFrXI58yFpeFZ1AQZF/rX8EvvS/Cr7JoJDL6ddxAnoJphX8GEezWndcFtxPMLFgypMFLw3TTCu+2V2Gy4sPiQuQdiK9QoYcH12CVhDn5Hk4bz+NKu5tl2S41KRwvpe9lt7NNcbISMq5qvjUHDfvb1Lz9jWPsar6VYWijW4S95rH3OKax+0GTtrl2lIWc0uLcXS3aevymFnc9nE3ztyuCX6ThteWPeyNRHURVM/Y6AolqcmN7AqyPOZscqW0aw6fQdr4BkeUhQw+g7AJzY0oiznML+1y3u62/9hw7gVWXpnuN2l6mYRUUWZU9eTvMGNDRLq69jiuj+hnNaPtQ53XJvC5ZF596wE6Ceao9PGJ09MYMLp/P6rU7PlpxT5ttjvxm5YPTyuwbe6jlgD9BNMKft78ErxW0pftPT+52O/zu8Jr5X1fuyt8sKDtXlhQ9+C0gv4+phb/PkMVHovwVLaoYy8MdVQhl/0P22dB9b0++JmXideCholnlyxJu3WcoCV3A4Ng6CrT3jxB60lJEzNB5y+UIhyU+kriKDRfnUgnYH0l14nXbHUSfJchgmVAyuuD01rd6dxsdtv9+1EjAk40VcBh1+yFnVn58NQCoxvtu+Z8ZMgxLZQmmFawrNMReaVmmadnDwtWDFyRn5rjSVTc64PTCvp5sz3LBojsyc88QqSSUk/ghtt/J+7WMaJXdjdICAYqkvjmUaIvJg0Tgt5ZKkY4TgAtcaCYsV6kIwXQch0q5qsXss2d19Lf4T6q/Y0ZISTQDBRISVcFyX4rPSapH2dHztqpZPqGJOBfZACfSgL8mMIFYX4iAZ+EZX66qZjj8XD8j83+ccdbZFlemWB6wb9sz6PKLZ6fXOxzPCxgTMm9JJMLP+x32/2osmmKyUUfmzDxjBPAv+z/1H5FkQIm4WQhp+bc+mBkrTl7eHqBr/KFhZYJJhd8loQ19UpHqSZLAGd7sG6BQgWTcFYhY2qlnv5GWeOFTCsaBZn8kE9bX2NM2v8Wh5iI4uf6EWziQfjhsH+4HI/N/gEaD875TZkK15M8Mo7x0zFln2reOnGhoSn++3a/PX1oHtt53eECI6oYEUzyOUR9f13P/2UPNyQLtbG5zCnxu3a9OlVZSjyDoJTlSClZsvEiDAgoe22cnzbHbTtfzKLK6o3S9LsOLrfwm7gD+UYcdQqjPuUdyYfD4YRjBtmM33SJmEi+gUBScdTikILBnVcwg6v6alD8SDldot+sQqICwW4tmMVVPz9RbXDcak1PTPMbVsipOQ9jB64+WvX8dLkW5sxLKhL+ZhXzqkKwTQtmk73HgH/428Nui2coNYE08bSqAsPN5rw9nbcPp++av1+2x+aZc2FUxFUzmkHo5eVxw+w54kV1iX4zo4oKBBvhYBZX/fy0/M/Npp0HPfejv7NfxGNrlqbSkPtPyUdV3s3K5PpmIP4QSB58N7m9DyYasWn7/ftj854xYVk5b/I8BquDecvxZEAqbiDCdrI0kc3UlMlNaFBYblHfD/bl5RNyWyni4r/j4iNA7m9gSvzaRL5Eyn+fGBMZlJJSjpRCPQfylss/PcKhj/cUDGRd3WVQeYnxkStDQoZiWcaLqWHSITWD4FQkhw6A1dVgHAlHrwNzqxu5l6+2h+5WuxvKu2p4E3blPYO5xRg5ZfrZZFUaxKCkoRYxQU6tSQzqGWwTUwQ12/cfcKc4rKdLe4scA+enyP2T/yx1JwENW+hbwg/Wm2F27Q1Ozp1XXn26Wqb0QpzhEkS349Rfi3V0hOikrw+X/ZRXf0PS36ZMdMyfQNTQsS+T9LxvzmQ+OEJRnnheTYLJ0zid1Qxn1E68jqNsrup6nKTm9bgI0SlxApWDOc6rnjsiTqZ0yEk3TdWv+4eBPn2MylpuM6om7qgRCgd8UuL+ORuqrmd5//ChDZL/Fl3R1ntiliEJ5yoahvqSmYqeeksbp23ma9puf4/he9rGvsr0i9rEbyO+PYnRfvP1SVWlI+5PYvRNukBpjKbKfdY9LWOuUBqhAd6hxGgYdYmS2IrG3vfHiLvlwj/JFeDDL8JcAcjoFdwBOI+s8bcCMopvuxZw3peZ5UV+q5cYcXcg13NOuzxwPvlTBH9miaKb2Rh5gqvZJgsbe1kbI3HO29rEcsdd11at3NnvaxPbq+zCtqr4L9JHiK5sY2SOvbNtpAXgS9uqVTbu1jaxHuG1bYy0ue9tE8tmL25jhN5+c5tYGry6jZF1291t8o8su7yN+8gz394m7miE17cxsue+v22c7NeNtvgCt5roftrPLVl6hRu3mJr7Dje5A2DkJW7cqv9z3eI28UVufYMvKn34Ijd2iTnbTW5iseKr3LiBZPa73EZIr1/mxiqe6TY3sdD6dW6MzJnuc5N7F/aCC904XwNO+8Ukj/BzkTSffy3LXUXPLmQld9HPNDAP3DjHjckTr5wb24GO7Dbn1zF46xy3WJp67ZxcGQOkOUEjLyoT6xi6eY7RM/XqObGuMXfPMRrnuHxOrLdy+xy7CBl9/dwIJ+jg/XOs53PyBXRjulTJDXR8/3rLFXRjVA7fQcdrnH4J3RiFovgCXuRgMMHn1Dm+TqWXHsyjGt5Ex4kbdRXdCC81vIuOnRmNuIyuXg9l9OzrQ/SbxdDZ3u/i6LlwJV4lIIH8Pks4AspTFIxAxc4cioB1zRyIcOs7DIchjHuN6UEIwjcZC4+h/FvQ8QTNDCeG0gSUeIKC8UgYirsNCN+gewbNX0TvCNALxU7EvBOVjtf22dRIA4uwslvDiioqRwQVQW2TQorkepCjBesYE04kLh8GE8HyR4USictnoD9UIED+Mg1j+T5UMyfdF0odx/YrdTg72Rf2EjKuXxE+G9UX1jjH9KHEsUR/1FfHPL9SVeNovlCLkOVDWXOTfKFkluNDkbdTfKEsyPChpNsIvvTDyvg9/rAz03thZyJk91Dy3OR+jOQhbs8Lno3aC+VKmT2er8xN7KUr5ZG8Hi+PPxetn/QSt6n/grKHOT2zmp+N0guFihk9HiRmJ/Ri2XU+z6idic4LRdbZPJQ4E5mXenMkXB77dmal8mPlipeK8xB5sR+C4/GME+JmGi8dbAdYPB5nJ5L4cR3kqG5xbg2DDB4vbqYSeKkqBtZiMSM5rVDDEHuHWqaSd6GmMdwd6puDugu1Vpg7s3AYTdzFbudB3s74mifTdnl3KWHtXN95C2mXKxzm7Jy+6ZRdrk7E2DmBNxH22zSOrcs56LpUMWTrWNgosi52BEOuzsxuRlD12vuXTP1P6JaKiNPzn6rEu3rwJJPXm4EzfwtdFfktrGXkZz+JD9AKif7zcHj579cboeCJe+jAInFi+eFa/L3q4wp7M3Dbuvy9GaHcHdQjZVZvpr5Z5MCdYCO1Sm70nSK5Z+PgPperib/+cnMDJVkNts9MFG5K3xAU2j+BVt4MHrenh8N+3zzUzq++Lh/yR7H2pExYQcMlCQ8wf5tpY5vRYLFb/obD/osVmX/c7naD2V8f+qw115YhPuP8bVDE8QTYkIvCKq1zptd5vQ568IDyt/zN2Yf9g6Soh0Ezu/11HhrxmeJvgyLmlc7N8Xm7rx+EfcXs2ZOf9eW6gsSHXL991ca9ZphofTPcdLMHJzXgy/7YPA2Wkp76rPUYCkl1qBaDlRhFVUeKwnPeL7f9WT5iPOyazbF+yRzN900/TfWdgt7J1cgWKxxMQnqqmBs+m11zLtb3MQ/2hOSexqEcvkhFVUWIx5OQX/192GoMN4j/5+Z0/va4PRy35+0/4n3iQvmV5F+oAjkF4gHsWnvsm9Srbmxd/QaVk9fG4OiX10bt9Zv9uNcvn/8ir58VKR4aQ+pcK/P61xM4p3Y+1eRfpHJ4BfIhMORWeRVuRZB7iGoaew6i4fpA93d+/WGz3ze1dcJrkb0kkwvvR2hDz05NzGAWX8RS6io6a5GNUgOvNFCXN9bjb1+HlfqTjVOVV2HqrvDlX8e22sVHr6K5lF+kxmDhXWXJhjH8Alw9XR3zf9ycNzKFZYLJHcXrJa55NML3zCWWPRnV5DOImiBkQuGT7aQstTMQ2UBPJN+w5s8ESdf9s9UAXf9r2cA96AS4iKczlwkzF+Et972y4qO/UyOLG7yKChV+K+oYfeXUlWxMu2aKlTHyaqmriCnXSXESPmxP58MRDjsVCa+pZpBwDW4eKeE11RwSxl2klWak4y/PGoj6H6ugSzVNQv/OvDDHxgCo/PFWBgRyG8JARB3/Gn/Z77Z75i2K3259iX5mQ+9QSsOd4PcD8538d3mX92l7PF82uxAtvg8XWZ/Om+cXUQFv+MT4NYtXwG9ZXpOBZJRPyN/0GroGXeQgzzfZ8/htiNRqsZW7qXG5Q7dSDxf8tNnu5G/bPX1Lkc+bX8LkTFxqnuCWgv8+qtS/z1HkqXW57c/bzW736/fnw66B4wQqHqa8Scq44icW2b/k7RvGL/T6q7x1wu3BfJ785uD8XTKZgmJrl8jXih+8RX5YxsNhf97uL4fLaYwImGqqhOvtk5JyXx+dWhiOMaDlVMIMhos4creA0lKO1Us/hws6jfhip9u/E9/Y+4VVG/pwUeeB6OdK2XzSyWKY5XWv5No8CxbT79japWhw1f2xOW+20BENH5R3d3FRjHk9n/WbLFntBan+wf3N/7epNJWKkte00+Tgqh+8LjR7aMT8b/9JnuOb+PTQWw3cLDnOU8gomeAvnCLw8vCxOU+XliefTVTN+z0oadABLhYUbX20Vb6h6cbLwJf3/tBfcr7+II4zHkCgOWCUt7HaRbyveQku3q0CycEbbbOiZDfYVosLNiUqLD05uajhy3Gz0oSX4dICe1fDtmbD3wcbfq2bQHaMXWp1eINb8Ws1T+kRdv0cRQfYlTL55WzRIVbKfH10XHnl3vM2lEr0htcHbyjrGjEiKe310RvKu4ZoSMp7fXRkefSAp3ZI6m/6ASW+PnpTiXGnZm/Qqr4qSXFT+SehsZ5uttR323Nz3JwPxx8l5f0tPf238aVmA1bYURQe4MI0yydGxPYzLlWQ35vHGj0mEpniXirTGlTky5B9sMUWIa6vT0Fu9/rziBDXzcvmgQtPIBm+yR5mQGCmsBZTKyut2kfiosRIFxYmCP/M0kV99VhFUdlD3fPMr3otThCtmaVMGrlp4/OL0IbSk1/kVUNhgkDMLF3UVw/BlJU9MAjO/ar74qtWojHyl91Xv+rThdnrQwu/PvhFXrQtSxIwmaUL8viwUlGx8bkv8obvm7Mkxi9L1opj3m/fHrNzPG5krTN/enIXf+Lil2hp1WmMoCAwiakVJ5jFzPwlX0sc3JCRJc1ei4umCcD8fzY73Bflv4+YCoRzrdm9wr1M35QJqmw/Sh25pbBfYnVfoaSol8MRNvd+UdcnpxfF4ot+WXWAISnsNBBURUssnp9e7Bmdw1Et+MydvnFL0X95advLJA150pnFtAz2Ivwe9QzmEVbnP3VNAgA0Vs4Aj6rrkRApqaBvm+PT4fi8YbbOYiFloukCooc5HFQhK7xMcGvBmF9xpVawlaRIbpHeL659ksSb1k4qkRQe/hEVfn1yvqJr3gIw8CBfwa0STvSsn4HRYeThPtKmJjW37tkZi68FxgEFMBTuZhHHzf701BzbQ7iFOsoUN0nJp5Dflkew//W4eXnB4eD4yREh2adf9w/fNafD5Yg72EoBb2hizvcIX4admP0vcwZITUmXaqIE6RpiWMPQUoLJ4foCbKWcDjs88a8rSsl+02oJIoa9d2zNxJeYGmRR0yaLshisJhpgy4UK3u4x73JBgzANMxw72L5m3htkpVnXBtPX7Acd7rUiaoPlaxFwkJQWwQ+GrwWAQVCcfW2wy0oYjPeuFjIwmGXlcINYpShq8bJVDH5S3ipqhsvkO2zKQPpE4+YkiMxdLmOoAXAyRE2iKoN+9YG1GXnk5jAXlF811IVqnGBWvfIG7UlQYCW+BpY5FGMjLHaw3+kVLOuCcNH9WCh2HZ39fPsQSTMbGilzbew+tVM9jCsr7fXZycVx9tgrq2qLuKD+V6nvBqLPzBSr1tuUMxiwNrxNYzBqjRYqC10TbeH763F7bkNNaNjg9b/rO97ynamb7S6ErGyOm92u2W1Pr5sTn5J37ffoMXEE2R9+ageCh+shvL34kvLnWWLIQJaiIDKilFvBBsTxTfuxP23697qiwntJegt3eO+aTE+296KmYQsdKDeUu9vE49D7ewxrMlCqG1WV55Vf+keAIx3xuZlL/kPrn5AWnx6eWcP3IyR8P4uCIfRUE8GQp9t1FHhAJIWmmLWN4mtvYTsdd+utrHx4RxoqffCKtPE2+b45t28k7/7f0BRzqvkQ9mSXM8OalvL5+ZX83+1u92cy3RvWU6aaX1W4hGm8LJJsfl0/IDA6XudANnPqfh64ohOJ7KeZU1G4vBjD0x8OI1uqPK/Z32CS1M+naeiOJDgtrFyRNKWF1O/cwc2Bv3JnvIIxN+zAuaHwgp0J86LhW2zgFKl+ic0UyxXdWYPtd/DKGtm8IFuafb27vJ5l11NR/DrLwqyfo2hdVsqc2imAwif3CSJFgqEUaLphJGVVkQti+gtGoGPEepErd8yyGSgYsWqu3nInkje8mgUKxy1mJ4kcXNwCWUNr21mE4LUuVjO81J1FElz6YkWDK9/bLaqyEkZdkWwhfLus+sIYKJOvi28Xx6yTUfc0vEy+XQ5cNgMxt10sLjLv+ioaaJIvom8XV1tUs0Pc8Jp6LmG1NTYrT7rEnkvkqKUtq3ryyvb21xha6QLNYxa6twucuvDlJo43rntvf6GhNSeaU028lVdoyPUVKLTaaXe+ivSMWY+i2d0M973Kpi7Dq1M0i5l+w6qwuYjWqrB13HS7Kq+uZKBt5mFm2dMWYWjv9zoVHT4HFGc4dBZoX2b9lSpvI3oRLlTqLz9xga79p+TUXRqjlOU7Lj7pKvvG2KS8+FFxSfXih3Y8cRJE+56qMtivnAb975rTZTf8ucvHR0RbcLE1Q7m/aaqbVWrvUllo4Z1Vg1pO9T1VMjG1RnyqtOJ6bAvK9ft6Z/f9zH1dLz9JV/c97ulyt2O8RZiZbeU/zuJ07GUo8jkWGqe6HPtFT/Y4SvTUlmF9KVPIplxFbc3FaZlCNeWKqo5YTtIkPyynadAN21cxwgvLlDrGCdsvfy4frETcsAu2r29GD6zEkpADti/qJv+rUAZ2v0ItN3pfhYKg8xXquc33KrGkiusVdMkzeF4louqO176umfyuEmmM2xV0Rzd6XSVioNO1L+U2n6vEqOsu176imTyu8hFtlMuQG+E+j8dQ8hJDDsO+4tn8heLZ3QR3ITPp+5zeQsnrDDkLwdg/0VcoM+C6qxBZ6zRPoUTNGEchmIPM4CcUDbLDbkIw3k73EsoaichJiNrETT5CVlu5aG5XFP/WfNh82mZLorjAzX8atRBvE+JLh7Jfbl1+06yGVt65qNrmm8FDr0cfw/4RVXE12zckCX6jUm+l8MpFpEzZQ3ePiop+3vzyzT4uj+q7gIri+6nGSTDYttFpz8Xv6Hv+eH+33T82v9x99c+7T83x1La/r+70W/N2fXd/97Rtdo+nu6/epe1hD4fn9oaxu/u7x8PDJfz54/Wx/2laX0r7cHz694u7+3eLe6/eWud//PH+XUocfgj/kfJ4/Z+QUN3dv1P3Vr1drJZFQtVLqIqE+u7+nb53i7e2TKd76XSRztzdvzP3zr81dlUkNL2Epkho7+7fWZTQ9hLaIqG7u3/nUELXS+iKhP7u/p1Hlep7CX2RcHl3/26JEi57CZdFwtXd/bsVSrjqJVwVCdfcZ1z3Eq7L79+aw/rert5ab0oD6JuOIrYTjGdxb/3b5ZokBuZT2k97tOI7pWDJfRtSpRGp1jSUhiX37UiVhtRePPxOmXvr3hqvy8R9W1KlManWRJSFsvv2pEqDam/xfaccTNy3KVUalWpNRfl7a98qVabtm5Uq7aq9HfadWsKC+6alSttSwbhWMHHfvFRpX+3VrO8UNDDdNzBdGphuTUYvYOK+gWnSQYUeChqYBp1UaWC6NRmtYeK+genSwHRrMtrAxH0D06WB6dZkNDQw3TcwXRqYbk1GQwPTfQPTpYHp1ma0h4n7FqZLC9OtzWhoYbpvYbq0MN3ajIYWpvsWpksLM63NaGhhpm9hprQw09qMgRZm+hZmSgszrc0YaGGmb2GGjINhINSgORswEpYGZlqTMdDATN/ATGlgpjUZAw3M9A3MlAZmWpMx0MBM38BMaWCmNRkDDcz0DcyUBmZakzHQwEzfwExpYKY1GQMNzPQNzJQGZluTMet7q9+u12Tq0TcwWxqYbU3GwjHS9g3MlgZmW5OxCo1Utm9gtjQw29qM1TBx38IsmWyF2ZaB7wzmW6WF2dZmrIWJ+xZmSwuzrc1YByusb2G2tDDb2oz1sOS+hdnSwmxrM3YJE/ctzJYWZlubsSsou29htrQw19qMXaPErm9hrrQw19qMgxbm+hbmSgtzrc04BRP3LcyVFuZam3HQwlzfwlxpYa61GQf7MNe3MEem9GFOb2HJYFZfWphrbcY5mLhvYa60MNfajPMwcd/CXGlhrrUZB1cGrm9hrrQwx87xXd/AXGlgfsHOhXzfwHxpYF6xcyHfNzBfGpjXbM/r+wbmSwPzvIH5voH50sA8b2C+b2C+NDDvWBvxfQPzZN3Iz8I8WDqWBuaX3LzA9+3Ll/blV+y8wPfty5f25dfsvMD3DcyXBrZcsPOCZd/AlqWBLRU7L1j2DWxZGthSs/OCZd/AlqWBLQ3bmpd9A1uWBra03NJ52bevZWlfS8cunZd9+1qW9rX07NJ52bevJfFNLNml8xK4J0oDW67YpfOyb2DL0sCWa3bpvOwb2LI0sNWCXTqv+ga2Kg1spbil86pvX6vSvlaaXTqv+va1Ku1rZdil86pvX6vSvlaWXTqv+ga2Kg1s5dil86pvYKvSwFaeXcCu+ga2Kg1stWQXsKu+ga2IA2zFrkFXwAdWGthqza5BV30DW5UGtl6wa9B138DWpYGtFbsGXfctbF1a2Fqza9B138LWpYWtDbsGXfctbF1a2NqyK5t138LWpYWtHbuyWfctbF1a2NqzK5t138LWpYWtl+zKZt23sHVpYesVu7JZ9y1sTdysa3ZlswaeVupqXbBLm/hbmTz7v2t6xa5u4m80PfG4LjS7wIm/0fTE6bow7Bon/kbTE7/rwrLLnPgbTU9crwvHrnTibzQ98b4uPLvYib/R9MQBu1iyq474G01PnLCLMP2H/v34G01P/LCL1p7cGqcHntgFsb/gvsewBzn7e95+xS4iFPT3E/MLPny8jlDI5U99/sGNj6fVCnn9qds/ePLhzFohvz91/AdfPp5cK+T6p77/4M7H82uFvP/U/R9c+niKrRABoAggePXxLFshCEApQHDs44m2QhyAgAAVfPt4JagAClCEBajg3seLQQVogCI4QAUPP14PKgAEFCECKjj58ZJQASagCBRQwc+P1xoKYAFFuIAKrn5M6gAYUIQMqODsZ2AdYAOKwAEV/P0crwPmR/iACi5/BtkBQqAIIlDB689QOwAJFKEEKjj+GXAHOIEioEAF3z/D7gAqUIQVqOD+x/gOwAJFaIEKBIAheAAYKEIMVIAADMQDzEARaKACB8CLEQWwgSLcQAUUgNcjCpADRdCBCjQAL0kUgAeK0AMVgABelSjADxQBCCowAbwwUQAhKMIQVMACeG2iAEVQBCOoQAbw8kQBkKAISVABDuAVigIsQRGYoAIfwIsUBXCCIjxBBUSA1ykKEAVFkIIKlAAvVRSACopQBRWxAu7+AFdQBCyoSBbggkUBtKAIW1ARLuDRC9AFRfCCinwBLlsUAAyKEAYVEQNcuSjAGBSBDCpwA2btAjCDIpxBBXTArF0AaVAENahAD5i1C4ANitAGFQACs3YBvEER4KACQ2DWLgA5KMIcVIQO2P4AdVAEO6jIHfDaBYAHRciDiugBr10Ae1AEPqgAFDwMMVOAPygCIJTnIaoCCEIRBqECVvDqXtu3a/r+gEIogiFUIAtM+wcgQhESoQJc4MoH9kdghAp8gZn+AByhCI9QATEw/Q8gEoogCRUoA6cfxR4R+/O8z0UBMKEImVABNnDlA/sjcEL5Sv8H8IQifEIF5MCUDwiFIohCBerAtB8AKRShFCqAB6b/BZxCEVChlhX7A6hCEVahAn9g+m+AKxThFSogCK58YH8EWahAIZj+H0ALRaiFCiCCKx/FvxH7W/JwXwF0oQi7UAFHcOUD+yP4QgUiwYw/AGAoQjDUqtL/AYihCMVQAUww4xfgGIqADLWq2B9AGYqwDBXwBDP+AZqhCM5Qq4r9AaChCNFQq4rvDzANRaCGWlXsD2ANRbiGWvHkTAGyoQjaUIFWeA3HXwA3FKEbKgALb2B6wDcUARxqXfG+AMShCONQAVt4i8sH9kcwhwrkwjucHtgfIR0qwAsPo7kVYB2KwA4V+IWHoRsK4A5FeIcKCMPj9g+IhyLIQ60r9geghyLUQwWQ4dcoDF4B7qEI+FDrSv8H0Ici7EMHlrFcIPvRgH1owj50YBlLHM0L2Icm7EMHlrFEzl8N0Icm6EMHlLHEIb0AfWiCPnRAGUu4fUED9KEJ+tALvvvTAH1ogj50QBlc9YPIYII+dEAZXPWD4GCCPnRAGUz1g/BgQj50IBlc9YMIYUI+dEAZS3fv9Nv1igaSA+sj6EMrfvTVAH1ogj50QBlM9QP0oQn60AFl4OoD5EMT8qEDyljCzk8D9KEJ+tABZSxh56cB+tAEfeiAMpYQfGmAPjRBHzqgjCUEXxqgD03Qhw4oYwUXrxqgD03Qhw4oY6Vg6wXoQ9M9EAFlrODgrdEuCLoNIqCMFRy8NdoI0dsJ0ZrTykLzh3shiPkFlLGCiweNtkPQ/RABZTDNB+2IoFsiAstgmg/aFEF3RQSWwfReaF8E3RgRWAZufmhnBN0aEVAG03uhzRF0d0RAGSvcfNH+CII+dEAZK9x8AfrQBH3ogDJWuPkC9KEJ+tCBZaxw8wXsQxP2oQ1P3jRgH5qwDx1YBtP7A/ahCfvQgWWscfcB2Icm7EMHlrFWaLMkQB+aoA9t+KmfBuhDE/ShA8pgWg9AH5qgDx1QBtN6APrQBH3ogDJw6wHkQxPyoQPJYFoPIB+akA8dSAbmrhqQD03Ihw4kA6/cNCAfmpAPHUjGGnf+gHxoQj50IBlr3PkD8qEJ+dCWD7XSgHxoQj50IBlrPHUF5EMT8qEDyVjDDbgakA9NyIcOJGPtcXpgfoR86EAy1kuYHpAPTciHDiRjvcLpgf0R8qEDyVjj3g+QD03Ihw4kQy1w9wPQhyboQweUoRYKZwAskLAP7WKwssZVgDYlEhN0MfYAbvvWgH5oQj90oBlqgY0Q4A9N8IcOOEMt8BgA+Icm/EPH3RcLPAgDAKIJANEBaHCVCAiIJgRE+7jbGg/jAIFogkC0Z7fsAwCiCQDRPpohngUAAqIJAdGRgCxwQwAIRBMEogPSUAo3BMBANGEg2se4edwQAATRBIJoH2NgcF8OKIgmFEQHqqEU7swBBtEEg+iANZSCfjQNOIgmHEQHrqEUdKRpAEI0ASF6WVkKAxCiCQjRy7jvH/fngIRoQkJ0hYRoQEI0ISE6kA2lcDsCKEQTFKIrKEQDFKIJCtHX7Rt4RAEsRBMWoissRAMWogkL0XEXh4LOQA1giCYwRMedHHqBMwBWSGiIjrs5NF5RAxyiCQ7RFRyiAQ7RBIfouKtD494Y8BBNeIiOOzs0bskAiGgCRHQAHHhWDHiIJjxEB76hNO4IABDRBIjoADiUxvMyQEQ0ISI6EA5mWQGIiCZERK94lyAAIpoAEb1aV4wYEBFNiIheRxvEIzpAIpogER0Qh9K4IwFMRBMmote60owAFNEEiugIRSBU0ACKaAJFdIAcjF8HQBFNoIgOkAMvbAET0YSJ6HVtWgigiCZQRK9r00JARTShIjpSEaYCgRESKqLX60o3ArCIJljEBMyBv4ABWMQQLGIC5oBfwAAqYggVMYtogXBSZwAXMYSLmEXsBuGkzgAwYggYMYt4GA+c1BlARgwhI2bB76Q0gIwYQkZMIB1wU4QBYMQQMGIC6FAGzikNICOGkBGz4AMDDUAjhqARs4hx0XBOagAbMYSNmLgrxMCRzAA4YggcMfEYKDyjM4COGEJHTDwKysCxzAA8YggeMfE4KDyjMgCQGAJIzPVIKDgrNoCQGEJITDwWCk9oDEAkhiASE4+GMnA0MoCRGMJITDweCtoxQCSGIBITkAfe3GMAIjEEkZiAPPDmHgMQiSGIxFR2hxiASAxBJKayO8QARGIIIjGV3SEGIBJDEImp7A4xAJEYgkhMPDMKH6wDEIkhiMQE5IGPEwKExBBCYgLxYE4UAoTEEEJiAvJgDhUCiMQQRGIC8mDOFQKIxBBEYgLyYI4WAojE0DOkAvLATmKDTpGix0gF5IHPoELnSNGDpOLmEDyIoaOkemdJGXZzjoHHSRHrM3x0qkEnStEjpeLuEOgjN+hQKXqqVEAeeHOOQedK0YOlAvLAm3MMOlqKni0VkAfcnGPQ4VL0dKlAPPDmHIPOlyKExATkgTfnGIBIDEEkJiAPvDnHAERiCCIxcXMIPgUNIBJDEIkJyANvzjEAkRiCSExAHnhzjgGIxBBEYgLywJtzDEAkhiASE5AH3pxjACIxBJGYgDzw5hwDEIkhiMQE5MEcYQcQiSGIxATkwZxiBxCJIYjEBOTBHGQHEIkhiMQE5MGczQYQiSGIxATkgTcHGIBIDEEkJm4Owd0nICSGEBITN4dARGYAIDEEkJi4OQRPPgAfMYSPmIA7cHC7AXjEEDxiAu3AweUG0BFD6IgJsAMHhxsARwyBIyawDhzcbQAbMYSNmIA6cHC2AWjEEDRiAunAwdUGkBFDyIjxfHC0AWzEEDZi4jlV2P4AGjEEjZh4VBUMTjaAjBhCRoznj0MzAIwYAkZMBCMGerIMACOGgBETwYjBfgQARgwBIyaCEbh6AVjEECxiAuVgVi+AihhCRUyAHMzqBUARQ6CICZCDmb0DKGIIFDHxECs4ewdIxBAkYgLiYGbvAIkYgkRMIBzM7B0QEUOIiAmEg5m9AyJiCBExAXBwB4MC8yNAxATAwSweARAxBIiYwDeYxSPgIYbwEBPwBrN4BDjEEBxiAt1gFo+AhhhCQ0ygG8zqBdAQQ2iICXADTz8ACzGEhZjIQnD3B1CIISjExIOucOsFLMQQFmKuLASXD8yPoBATUQhevQASYggJMYFsMKsXQEIMISEm7g3BzQegEENQiIkoBK5eAAgxBISYCELw7A1wEEM4iIkchDlcF1gfwSAmYhBsfoCCGEJBTKAazOoFUBBDKIhZ88d1G0BBDKEgZs2f2G0ABjEEg5hANZjVC6AghlAQE6AGs3oBEMQQCGIC1GBWLwCCGAJBTGAazOoFMBBDGIgNTAOvXixgIJYwEBugBl69WABBLIEgdsGfIGkBA7GEgdiANLjzocFJywSB2HgsFj4iGhAQSwiIXfBbgy0gIJYQEBuQBnNQNEAgliAQG4gGc1Y0ICCWEBAbCQg+LhoQEEsIiA1AgzkxGgAQSwCIDTyDOTQa8A9L+IcNOIM5NxrgD0vwhw00gzk6GtAPS+iHDTADr14sgB+WwA+r+K2ZFrAPS9iHDSgDr14sQB+WoA8bSAZevVhAPiwhHzagDBxgagH6sAR9WMVvTbcAfViCPmy8H8NABmoB+7CEfdh4R4aFDNQC+GEJ/LABZuDNfRbAD0vghw0wA+9OswB+WAI/bIAZOMDeAvhhCfywAWbgEF8L4Icl8MNqPiLLAvphCf2w8WwsCyGuBfjDEvxh4+FYFkJYC/iHJfzD6ooNAv5hCf+w8XQsCycxFgAQSwCIvR6PhW0AEBBLCIg1fESWBQjEEgRiIwKxEMFawEAsYSDW8HGBFjAQSxiIjQzEQgJrAQSxBIJYU7FCAEEsgSD2CkFgpLoFFMQSCmIrG0UsoCCWUBAbKYiFXhwLOIglHMRGDmJxTwhAiKU3bVj+lA6L7tqgl21EEOJwT4ru26AXbgSyoRzuCdCdG/TSDVuxQnTtRu/ejWCFDvck8OoNYoW2YoXo9g16/UZgG8rBcBCLbuCgV3DYihWiSzjoLRw2roZhNIhFF3HQmzgsv1Xdors4CA2xLh41jnsigEMswSHWVbpCgEMswSHWRSPEPRHgIZbwEOsqRgh4iCU8xMa7OfCMDPAQS3iIjRtG8EUXFgARS4CIjRtG8FG5FhARS4iIdRUjBETEEiJi434RfNauBUjEEiRiXcUIARKxBInYuF0EH7hlAROxhInYyoFZFjARS5iI9fG8ShjRZAEUsQSK2LhhxMPYSAuoiCVUxMYNI/jMEguwiCVYxPpKVwiwiCVYxPragAywiCVYxPqKFQIqYgkVsZGK4FNTLOAilnARGzgHdgxbwEUs4SI27hbBx65YAEYsASN2qfgocwvIiCVkxC75kxMsQCOWoBG7jFaI+1LARixhIzawDrz71QI2YgkbsYF1wDB3C9CIJWjEBtSBd79agEYsQSM2oA68+9ECNGIJGrHLysIEoBFL0IgNqAPvnrQAjViCRuyqMiMEaMQSNGKvV3/gbgywEUvYiI07RfDJPxbQEUvoiI10xOOxDOARS/CIjXjE47EI8BFL+IiNfGSJxxIASCwBJDYCkiWeFQNCYgkhsZGQLPGsFiASSxCJjYhkiccCwEgsYSQ2MpIl7koBJbGEktgrJcE9GcAklmASGzEJPoXFAk5iCSexgXtgSmkBJ7GEk9h1PEIaWzIAJZaAEhvAh8LnuFhASiwhJXYdDRFbMkAllqASG3eMMG4OwEosYSU2sA98EooFrMQSVmID+1D4KBkLYIklsMTGHSOcGQE7JLTELWKsIOzQHMAljuASF/AHc/0dwCWO4BIX94zg02wc4CWO8BIX94ys4LYfB4CJI8DExT0jK+ircoCYOEJMXNwzsoLTGgeQiSPIxAUEgs9EcACZOIJMXNw1gufGDjATR5iJW0Q7hJ2JA9DEEWji4rYRfCiMA9TEEWri4rYRvKPeAWziCDZxcdsIPlbGAW7iCDdxcdsIPlfGAXDiCDhxit8+5wA4cQScOMVvn3MAnDgCTlzcNIIPlnGAnDhCTpxiD5ZxAJw4Ak5c3DKyhsO6A+TEEXLi4rXi+GwTB9CJI+jERXQC77QE4MQRcOLiuVq4KwTcxBFu4nSMm8Y9EQAnjoATp2PoAu4IADlxhJy4QEIUhlcOoBNH0IkLKEStcUcA2Ikj7MTpaIS4IwDwxBF44uKd48gGATlxhJy4SE7wAsEBcuIIOXHxXhF8vooD6MQRdOLi5eOLBXwDYISEnLh4//gCrhAdICeOkBMXSIhe4FYE0Ikj6MSZGL4PJ8cOoBNH0ImL20eYdgDYiSPsxBn+gDcH0Ikj6MRdbxfB7QiwE0fYiTP88eYOoBNH0ImLV5Pj4oEREnLiDL9KdgCcOAJOXAQnTDcAwIkj4MRVwIkD4MQRcOLiNeWweIBNHMEmLlAQrnhggISauEBB8NsDaOIINHG2Yn6AmTjCTFzcP7KAi0MHoIkj0MRZtg8ExMQRYuJsrQ8EyMQRZOJsxfwAMXGEmDgbu0A8HwbIxNH7y13sA/EohK4wp3eYBwTC4GeHrjGn95i72AfiYQxdZU7vMg8MBK8MHbrNnF5nHhiIXqyQEaALzXs3mkcbXGMBwAbpreYBgWh8PJJDF5vTm80DA9H4eCSHLjent5u7uIcYr2rQBef0hvN4yBYzoUO3nBNq4q73nOOOHFATR6iJi3edK2yHAJs4gk1cxCbM4hZgE0ewifOGn44AauIINXEBgmgcTewANXGEmjjvKvMZgE0cwSYuXn/engcA3gDYIaEmzkc7hD5rB7CJI9jE+WiHK9iUADZxBJu463YSGFDlADdxhJu4634S3BYBN3GEm7i4oUTjtgi4iSPcxAUOojWeVAJw4gg4cZVjthzgJo5wExc4iMYHJDkAThwBJ65yzJYD5MQRcuLiMVuMlwigE0fQiQsoROMjlhxgJ46wExdYCNOUATtxhJ245brSlAE8cQSeuFVtaQLoiSP0xK0U35QBPHEEnrjAQrimDOCJI/DEBRbCNWUATxyBJ25lK00ZwBNH4ImLF6kzgxqAJ47AExcvU2e+IoAnjsATFy9U574isEMCT1y8VJ35isAOCTtx8V51ZlQF7MQRduLi5SPY0QbQiSPoxMXr1ZkqBOjEEXTiAgphPHUAnTiCTty6ZoYAnTiCTlzcY8LMKwA6cQSduLjJBPclgJw4Qk5c3GSi8RQfkBNHyImLu0y4bwCskKATF7eZ4PPWHEAnjqATF68gYawIWCEhJ75y1pYH4MQTcOIXcUyGSwwPyIkn5MQv4pgMPd4ekBNPyIkPIETj07Y8ICeekBMfyQnyt3rATTzhJj5gEG0WqBl4wE084SZ+UeF3HoATT8CJDxxEG4UV9K3QE3DiAwfRRuMM+lboCTjxgYNoY3AGfTP0BJz4wEG0gStND8CJJ+DEx3vY4UrTA27iCTfx8R5242B6YIUEm/iAQeBmZQ+oiSfUxMezttBuRQ+giSfQxKtogx5XH7BBAk18oCDaLHEGwAYJNvEq2iAcDDzAJp5gEx/P2jJwqe8BNvEEm/h42JbF7RCAE0/AiQ8gRFvcjAA58YSc+ABCtMXNCJATT8iJDyBEW9yMADnxhJx4ze+68wCceAJOfOAgeNeaB9zEE27iAwbBu9Y8wCaeYBMfQAjedeYBOPEEnPjAQfCuMw+4iSfcxAcMoi1c3XjATTzhJl6z7M4DbOIJNvERmzAGALCJJ9jER2zCtCKATTzBJv664wQPRgCbeIJNvDGV4RBgE0+wiTe2MpoBbuIJN/HGVUYzwE084SY+XsvOjGYAnHgCTvz1XnY8mgF04gk68fFidjyaAXTiCTrx8WJ2PJoBcuIJOfGBhODRDIATT8CJjztO4GgGwIkn4MTHk7eY0QyQE0/Iib8evYVHM8BOPGEnPp69xYxmAJ54Ak98hCfMYATgiSfwxEd4wgxGgJ94wk98PH6LGYwAP/GEn/jAQ5ixBPATT/iJr1zO7gE+8QSf+Mrl7B7QE0/oiY+Xs+OxBMATT+CJj5ez47EEsBNP2IkPLETjvXsewBNP4Il3PMDzAJ54Ak98DZ54AE88gSc+whO8+c8DeOIJPPGu4qTxAJ54Ak+84500HrATT9iJd+taFQAjJOzER3Zi8fIWsBNP2ImP7ARvH/SAnXjCTny8oARvH/SAnXjCTnxkJ3gsAOzEE3biIzvB2wc9YCeesBNf2XHiATrxBJ34iE7w9kMP2Ikn7MR79hRgD8iJJ+TER3LCTMoAOfGEnPhITpjhCJATT8iJj+SEGY4AOfGEnPhlbVoIyIkn5MQva9NCQE48ISd+WZsWAnTiCTrxy9q0EKATT9CJX9amhYCdeMJO/LI2LQTsxBN24pe1aSFgJ56wE7+sTAsBO/GEnfhlZVoI0Ikn6MSv+GkhACeegBO/4qeFgJt4wk38qjYtBNzEE27iIzdhJmWAm3jCTXzkJsykDHATT7iJj9yEmZQBbuIJN/EBgzCTMoBNPMEmfsUfS+MBNfGEmvgVfyyNB9TEE2riV/yhmB5AE0+giV/zh2J6AE08gSY+QhMHwZUH0MQTaOIDBNEOYh8PqIkn1MSveYTsATTxBJr4uN8Eh5h7AE08gSY+QhOuCoANEmriIzXhqgAYIaEmPlITvJndA2riCTXxkZrgzegeUJP0fz/e3233n5rjuXn8Zv/Y/HL31bt3d3/72/nXl+bu/p93f9vG//TqPhR099U/75RXd1/981/3d8qb9IdPf6yufywX6Y/0zNKlP5bpj/X1j1XKcJUeXqWHV+nhdffHNVV7d3n8Q12Tt/cBxz/M9eH2VrHrHyb9kVIlGTqV3h7YE//QLv2R/sekZ4xJf6RnUlntIRPXP9IzNj1ju2eu4tu9/Nc/0sMuPePSM6me2w3H1z/SM8skbHUttA2Vvf7h0x/XZ1wS1oZTXv9ID9v0TKofl+qnXTvFP1Lpbbv76p//+td9Mqz438mkwm+tjW1+Op2Pm4fzy+Gwy21o9WpCq1EZ/Xw4fmyOeVYt2+oya+mVKLuH8/ZTadVZLmrdfX01Irvt/twcP22KF23ndJm6VH3JdPxSqPfx8bw5fXy67B/O28M+L8FkwtPXXV+/l0pWp/z1l/Yc7PhqiyRBpz+SAbTDokjU07k5trKaX5qHS6vrw+HwMdemVnmlxmy6dp2s1CTV7SmP4nKjIewPj82pOV9eilKzGtHXvFepRlJbbQ+0v5aqZaW+f39s3m/OhdW029Rfy1r51CSFL3L6df9wbE6Hy/GhKW0662OdNLdPm+1u89OuedkcN7tds9uenstMV7kpCt/6U3PcvC/ELRd59S5SD+xTD6xTD5x619T56FXXZckK/2nz8PHl2JxOl2OhwOmsdpL1JrPSaQBZpw+c/sd0PaXwk+fln87NZrfdvy++/nKZtT1hl5hnmhlx0RfZvNkItTZPh2NTbY06/3DXOukG1zRUmDQwGOn7XB4+NudT2QB99oHiSCzI5/Rr8ZFNlkcaf1Ir1klk90ecQIhK4Wrd5bUue/mHzcvmYXv+tazmXLmRfb6HD83Dx/6o1MbHv+blFiPy2j82z9vz46/7zfP2Ib7yw7HZtIbRfGr25RfL+5tUpWnIUGlOZdKkqD0L/SYhj83pfLw8MFqy1t2NTalRp97FpOHELKWVcjicyr5b5X23NJvt8eGy2xx/ujw9lfOQrHEJs9o1m2PZbHLDSS3UGaEpttm17f/090tzKd/UZZ/XWqFF7i6nc3NsZ26Hl/ZLFR/J5SP7QjaHu+YIpnA26/C8FuZ22D9cjsdm/1C0vva269ev6mVD58NhHw3yUH6Q7B2vE6vrN0mrFZWmLmn4ay9Ju7aRNJ1OltqGRl1nXOl/4hxeIu+83V8OlxMehVb5KCTrbUNX0Gz2j2H2VDTOtmMsp7BZhV5fIc10VFrxmLTQMZMEMCVnZpFmE90iMM0qTFrAtIdkS0p+3Jw3ZR+7yJtd+sS+WwWlDynNv3naXHbndr1ybt4Xxul9PsTIKuqx2TXnJp/9x8q6nMi8TOXTImulufd7i7XN6yOtE4307UOGu83p/HLcHo7b8/YfTVi8lFpNrlW23rhm3c/L5nnJeo/H5ti83752R8/Nqa3PXftfe9I75cOETy03dQDJ7FPLMMLZehgCD4V12MwO0+pkneZntnOrpBGw8xYspJ86lMg0NZ+Phdemlhw4Jo21aTnZnicvKnJ7ejjs983DufhgNjdULesDr11U2fHlS19p64z5ZKNbMaxlg4cTWlLM8Pzh2GweaX7t7Zxdhu39myNy5Kapy7wPGfXSMcdWZzlkFh9/LZu9FFn2+yKdj8LCdX2zuxQvWjgP0vJynZx36258TR31Ovm21rLpaTstPZdtXWWWmfLtfJTJA6jSMsR0LoyV7Ds0zy/lWiHrBdNbGFl7aPbtUr8/e14Xo7VQVsjr2l2XprHOG4Qekx2eitp8JnrtydK3Vck1qpKbUadez6QVoF1INYBxzeXv0tW30Fj2zOCTZWqFC7Rm/6n4ZPk0J9WBW8g6i+Z4PJDJdO7mEU6AQy4fNvvHXdke8irTyT9oldBEW+MEmarCZamE9d9mtjscXi7n7W77j7COfW42rRelfe503py3p/P2oXREFEOqFn6d4D8prTYfsK6G00EI23ULaS68SFNTl5z10o8Zi34s3iH3TNuVbKxPGYVGWDjv8q5ejcmst+rIq1ba/6Wc+rry8UJJc9si88qdT7qDLEIv1NNmuyP1v8y7LKFrPGbTf8tV/pbCrLatR/f8oex1cgR3na0ld03iU6Zbm61kM5mn7S/NIzcxyvHIQtZkQ36h16SzzfbsnawrHiGPm2ZlFWuEq+qn3eb96xxrc9ofzr2pUTGNubbqVVr8d9yiG6XW0pIvpw94fMx99GkpmuY1qkMWaZAwa2HVXXZFfeULputwY2UDxfummMrnI2rKSOauet+cnzfbPXAG5VNmrxIxS5OFNmxFmP/LYbclziGTdeRGaMbvm7No9e3ziYBYZDCDbvA6Nn+/bK8jWik8nykq2UD2vrni0u3+6VBU8TqvhauRJQ9r5/9P45oRTqdjV9yfj5hl/j3TAjoNo17oS465f9zudtelellGPudJLjifPENe6Ny9DiZtJwALyUFz8oX71N164cI/FpJb1OGlOV7nM/1C8xmM71yJaSHuV7LW9mFz4vixLTwxV2NIU5o0fCqfXAAuMc5FqmXdwZmkbiXrBj9sT+fDsWyguYfMCuH4thyvixdKfahNiwyfPLXepB5FSCO3j7uSg+bT9uTbtVqeGbPAz70aWjjV3r6OtaVrsyClMgOlvUXuXksTWpW+vnJdlE8anLoIldTWrZPNvUL8xH6z47BvHkqRWt1aJ0tNjrhuxreQNfquVMIfTTbtS6aSnA+q8zm7FOizEFYunbr47KWUk/WF21M7dBZi83Gtiy25ilVJbPKhm2UyfdXFfixS2xXW2rntswguWa/yWV1ayFqhCfenAqr0Fsjmy9d8Hj4ctg8NcsIrlTdc4fCzxW7T9t6grPeU2UA7iJWvmc/H0oDsnDy3n5oPm09bMu7mOMCn4d0LPYZ5riWdzR0eXjj/bHMDKzWdUwCfmrIXOpdbxNAOauftc3M6b55fysE6Mx3fjVWmmxHIuqSWB+QD5+nl2I7W523ZZRcf8NrIUmyicl34Y+e5T3EwyVHgdRdp17VDWc0+b16QvyJ3SiXvWgrVUSneUC27Xix5doRT4ufNL9vnSxFdlK+S9SKFWqaK1wmc6MQSrPALXIvaX55/ao6Hp9gMy7lx7hBPa7Q0LKTO0HQMQ+jfbsvdx4CM1sBKs81xtXDN97z5JQzPxLeQO5aE06Yup557YVUE+EgN6JfT9h/F+63yT5mmnE7oPct8cqVjPY/qSJ9HC5cWWaYgFkEVhFo4I859h2VmxeJofGbYEZkHF1nhcgTmyq4QC1gu9Mc9N4/bTTGRyA1SL9JnSv2UTvMFnUZ3nSYOOkVY6oQN7VIqor/qyZmrE44H13wePmz2+6YcYHOsZ90oWcjBmDuFugngUth6K6A5n+74FLnqUwfuhb7fawmfNju6GMgr1Qpb3nbf6+nz1paiiPUiheInN5lO3qr2fqERRdV6+jwu8jpidhsH0rzJdJGM0v50u+/1gHkrEHZ84fkipC6v7oQMXdLrUgiNS1MzJxxJgrfyeNyQoMN8lSbkfqUjQBWzBmHc4mFfRi63l6Fmmcgs9rDfbfewpeXe0G6bhDDU8/BCesg8+CaFOKSpUFrhmS6sKLl5ver8G2kOvZLNzNulXsBWxXovJ8wr2Zt0GZXvk8NqLXR6t1nRBb7PGrQSTo+YsMB1LkkYgtRmRfcYqTzuVQuXxSkjUkt5d+Vlk6KXw/Fctq4cgwudu4int7v9M4dMWuoll4nrtvCkMDfvhN/1Whig3rkLSDgpfDkenren5ticXg77U/O8KdZWBQq69sJdYHZyMXQUSuivJ0X+fNy8vNCNPnmcnnAO9XIpW182wIrSozl77l8ULtO4CXtum8K9Rj1GtconfilczyY87ZxsCpvC4doOPQ69LL7PY3+tk9VjP/vKRKiAHan3TX7GNPCbtKQ0QjdxGfDHv12O24UxYOJYQpN9q7QTKbnWVfKXmjS5NsI18rH5XxJip/PllhM6uI/N8+ETCZEvwgK72Huppbb5sdyh8PRfqyA5DlTapqaWXQRQchykPsd3wZiuG5hlA8Wx3TNWvmc+pRfX+umwI9s18pWok+dz3hyvqO6w7wG0nJVr4dhzbM7HbXN6OFzIMrzwai9kY8vxUnw4nTubfefC6sxZuOw7XvZh/1uZde4QTEsKn2b0XriSOF72/Zxzn01nQilEwgtXb8fLnnqDVnmIlO6iE5NrLXndXJpGus7PKQQUp2b/GCzk8nLtWc6Hvq/cZDJSfXUbr7tNCWlxZoQfqS2b8X+eDwy/z4OlfNrF4lMT90LXRCiZLSI3k26/UppOeeEsLxYBqjKP2b3KTnRLdXugElk0QqM8tdHr+/N2s9v9ejofdk25+MppohX2Y6fmfN1swHayueMjjaDJraNSBLlKWxxM2vNl054vr7uJaOeel5ptEjcIZIpRUcl6uFMDXYH5jmPdjR1KNkM4XcMxwmwN5G6LjTapNlMlphBVlSbxptu0L3+n1/JhOG5OC60Xf4g25K6sp3zPixZOEcNOHbqpNI/uSGvnNFFQ3Sa9bu0u3HZ8agatxuYhZKmjSxhedaA6uZpN2jdh5caAJKC9cPm6JPUTaau/SgETKjlITdpZZIXxl6cPm90u7pcqou6Lz5AHwKVxM32G5Eo03R/C4Y76xfLV/XWgS4W4NBtzwt08YUgrqjFfGifpKVpDJWamkt/MJJeaFYaLhgLLtdwqn95qYaf7OlkjTSrHJsKQB0wL2jOsMndDWgF1fXJqZ34pHOjOm/OlLCFvPd4LGyXafJgzJyvEwSkjJgBmlU/GjbCTAyNq7s5MMZRWSJxifv0Fez68CONpUOel84WVS7vJXHJHusRQvHABmsqgextVfliP7bpAoQMz5QoCKYszNtL0QUvnLdd8r6uUooLzfIU+6HauD7pqkrMqZsjCrpdu99A5ZXPCXrTNJCx10AxN5153LxyJuelee5Zn1nF0QQXdH7LvUwQn/tTzLeQrdy/0/8B4x7JF5KPoLbkem9NlRxTnIajCaRPMG/SkKh+2hN7aPG8cUaJz575L8RlOuHgqlmzlMji3NtWtnLoN6V3s2HhLYWJjVB5O4Lrl8AhTLOM7de6rcSnIzQndzG1+L83x6XB83hB0pXNS4HzniZcLJYegFNNC+Yc7PW3329OH5rH1NBxK/7XKZwbay3uLuKYoDrQhczuVkynb7X4X+oiyMuJ5MDT3fKrlhAdGVBdjKo9t1amL0yNad2WdlU9BnDAo6jXLftXmyMDLh57uvIfDnguKVXmXr6fkHXq2cnDPF4d+hOUysS/5slkYniPcFlEcaZTQuhYemRTLAHPavEvXXj4UsWN8vkL00m/UHJ+3e3reWOHQSX4+K9UYNk/RcPn86xhhw+x2YaGGWbgERkkDrr58VeilmcGI0Nw15LrTWVbd7nGhYR56sRfZ6wo7y+Nmf3pqji0hKiXm0zffRYoIDYYwdFfEn6QZ4N3VJZAc1V2AZPof0zFoYUj7ZX9snkqTyhGacH/15eWxd7Ze3gw7p5pwJO1v0MpPVbNCF3G22bj44rnPP8EEnVCl1TJT+tQcTyTjfM6ghSeufNoez5fNLhz9tn+Etq984QeWdY8/b7ZnCjvW+SdJ3Y9Oh5SYhO+ccG/rz832/QfapeeeLKG7sN9v5LvxkuuoO362Oxu22+vWBY91B8AK9wVI1p35thXhWS042/YcqOYXMiHMgjGu2rvTdTtCvuiiMtILC4fhQdd9ftaddp1BCD+/zL+qFsU5UCnyVBgud8X9vW2JeTCh810M3pjvQ0bSPJrDJSzghM41vFNT5fv1rfAclcEohHx+k9aAiZWoLvigGxmE48+rNy/EVjw25822DMPNwyrdqKbd5vqxIXP0/AMuuvjKMabXZosMLme6TnjiCOPMzBeVCQEnf5lKDFGtuqDZbr9CarLCEweu4QOo9eSDVedJ6BD4KItn/NX5AUJO6ASOGfYC/3IPqxMGmrxmRVbguedBuJOS296dOyadkOf9fNye26NwyrrKfVGSKdaP93cv25emDZG9++rdj//61/8HHy01meWCAgA="; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/AbstractPool.html b/docs/classes/AbstractPool.html index e850caa6..658a72b8 100644 --- a/docs/classes/AbstractPool.html +++ b/docs/classes/AbstractPool.html @@ -1,8 +1,8 @@ -AbstractPool | poolifier - v4.3.0

ClassAbstractPool<Worker, Data, Response>Abstract

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

+AbstractPool | poolifier - v4.4.0

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

Hierarchy (view full)

Implements

Constructors

Properties

  • filePath: string

    Path to the worker file.

  • opts: PoolOptions<Worker>

    Options for the pool.

  • OptionalmaximumNumberOfWorkers: number

    Maximum number of workers that this pool manages.

    -
  • Returns AbstractPool<Worker, Data, Response>

    Properties

    emitter?: EventEmitterAsyncResource

    Pool event emitter integrated with async resource. +

    Returns AbstractPool<Worker, Data, Response>

    Properties

    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:

      @@ -72,93 +72,93 @@ The async tracking tooling identifier is poolifier:<PoolType>-<Wo
    • 'backPressure': Emitted when the number of workers created in the pool has reached the maximum size expected and are back pressured (i.e. their tasks queue is full: queue size >= maximum queue size).
    • 'backPressureEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer back pressured (i.e. their tasks queue is no longer full: queue size < maximum queue size).
    -
    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}-${string}-${string}-${string}-${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}-${string}-${string}-${string}-${string}`, PromiseResponseWrapper<Response>> = ...

    The task execution response promise map:

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

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

    -
    workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

    Worker choice strategies context referencing worker choice algorithms implementation.

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

    Pool worker nodes.

    -

    Accessors

    workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

    Worker choice strategies context referencing worker choice algorithms implementation.

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

    Pool worker nodes.

    +

    Accessors

    • get backPressure(): boolean
    • Whether the pool is back pressured or not.

      Returns boolean

      The pool back pressure boolean status.

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

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

      -

      Returns "fixed" | "dynamic"

    Methods

    • Parameters

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

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

    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

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

      +

    Returns void

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

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

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message: MessageValue<Message, unknown>) => void)

        The message listener callback.

        -

      Returns void

    • Terminates the worker node given its worker node key.

      +

    Returns void

    • Terminates the worker node given its worker node key.

      Parameters

      • workerNodeKey: number

        The worker node key.

        -

      Returns Promise<void>

    • Parameters

      • Optionaldata: Data

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

        +

      Returns Promise<void>

    • Parameters

      • Optionaldata: Data

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

      • Optionalname: string

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

      • OptionaltransferList: readonly TransferListItem[]

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

      Returns Promise<Response>

      Promise with a task function response that will be fulfilled when the task is completed.

      -
    • Gets the worker information given its worker node key.

      Parameters

      • workerNodeKey: number

        The worker node key.

      Returns undefined | WorkerInfo

      The worker information.

      -
    • Whether the worker nodes are back pressured or not.

      Returns boolean

      Worker nodes back pressure boolean status.

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

      Returns boolean

      Worker nodes busyness boolean status.

      -
    • Returns whether the worker is the main worker or not.

      Returns boolean

      true if the worker is the main worker, false otherwise.

      -
    • Parameters

      • data: Iterable<Data, any, any>

        The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

        +
    • Parameters

      • data: Iterable<Data, any, any>

        The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

      • Optionalname: string

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

      • OptionaltransferList: readonly TransferListItem[]

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

      Returns Promise<Response[]>

      Promise with an array of task function responses that will be fulfilled when the tasks are completed.

      -
    • 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: MessageValue<Message, unknown>) => void)

        The message listener callback.

        -

      Returns void

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

      +

    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: MessageValue<Message, unknown>) => void)

        The message listener callback.

        -

      Returns void

    • Sends the startup 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.

      +

    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.

      • OptionaltransferList: readonly TransferListItem[]

        The optional array of transferable objects.

        -

      Returns void

    • Parameters

      • name: string

        The name of the task function.

        +

      Returns void

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

      -

      Returns void

    • Parameters

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

      Returns void

    • Parameters

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

      Returns void

    • Conditions for dynamic worker creation.

      Returns boolean

      Whether to create a dynamic worker or not.

      -
    +

    Returns void

    diff --git a/docs/classes/AbstractWorker.html b/docs/classes/AbstractWorker.html index 1db8abc0..7d3980cd 100644 --- a/docs/classes/AbstractWorker.html +++ b/docs/classes/AbstractWorker.html @@ -1,8 +1,8 @@ -AbstractWorker | poolifier - v4.3.0

    ClassAbstractWorker<MainWorker, Data, Response>Abstract

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

    +AbstractWorker | poolifier - v4.4.0

    Class AbstractWorker<MainWorker, Data, Response>Abstract

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

    Type Parameters

    • MainWorker extends MessagePort | Worker

      Type of main worker.

    • Data = unknown

      Type of data this worker receives from pool's execution. This can only be structured-cloneable data.

    • Response = unknown

      Type of response the worker sends back to the main worker. This can only be structured-cloneable data.

      -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    Methods

  • mainWorker: undefined | null | MainWorker

    Reference to main worker.

  • taskFunctions: TaskFunction<Data, Response> | TaskFunctions<Data, Response>

    Task function(s) processed by the worker when the pool's execute method is invoked. The first function is the default function.

  • opts: WorkerOptions = DEFAULT_WORKER_OPTIONS

    Options for the worker.

    -
  • Returns AbstractWorker<MainWorker, Data, Response>

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    -
    id: number

    Worker id.

    -
    isMain: undefined | boolean

    Whether this is the main worker or not.

    -
    lastTaskTimestamp: number

    Timestamp of the last task processed by this worker.

    -
    opts: WorkerOptions = DEFAULT_WORKER_OPTIONS

    Options for the worker.

    -
    statistics?: WorkerStatistics

    Performance statistics computation requirements.

    -
    taskFunctions: Map<string, TaskFunctionObject<Data, Response>>

    Task function object(s) processed by the worker when the pool's execute method is invoked.

    -

    Methods

    Returns AbstractWorker<MainWorker, Data, Response>

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    +
    id: number

    Worker id.

    +
    isMain: undefined | boolean

    Whether this is the main worker or not.

    +
    lastTaskTimestamp: number

    Timestamp of the last task processed by this worker.

    +
    opts: WorkerOptions = DEFAULT_WORKER_OPTIONS

    Options for the worker.

    +
    statistics?: WorkerStatistics

    Performance statistics computation requirements.

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

    Task function object(s) processed by the worker when the pool's execute method is invoked.

    +

    Methods

    • Handles an error and convert it to a string so it can be sent back to the main worker.

      +
    • Handles an error and convert it if needed to its message string. +Error are not structured-cloneable and cannot be sent to the main worker.

      Parameters

      • error: string | Error

        The error raised by the worker.

      Returns string

      The error message.

      -
    • Handles the ready message sent by the main worker.

      +

    Returns void

    Returns void

    Returns void

    • Runs the given task function asynchronously.

      +

    Returns void

    • Runs the given task function synchronously.

      +

    Returns void

    • Sends a message to main worker.

      +

    Returns void

    Returns void

    +
    diff --git a/docs/classes/CircularBuffer.html b/docs/classes/CircularBuffer.html index 23426176..465e20b7 100644 --- a/docs/classes/CircularBuffer.html +++ b/docs/classes/CircularBuffer.html @@ -1,5 +1,5 @@ -CircularBuffer | poolifier - v4.3.0

    ClassCircularBufferInternal

    Circular buffer designed for positive numbers.

    -

    Constructors

    constructor +CircularBuffer | poolifier - v4.4.0

    Class CircularBufferInternal

    Circular buffer designed for positive numbers.

    +

    Constructors

    Properties

    Methods

    empty full @@ -11,14 +11,14 @@
    defaultBufferSize
     
    -

    Properties

    size: number

    Methods

    • Checks whether the buffer is empty.

      +

    Properties

    size: number

    Methods

    • Checks whether the buffer is empty.

      Returns boolean

      Whether the buffer is empty.

      -
    • Checks whether the buffer is full.

      Returns boolean

      Whether the buffer is full.

      -
    • Gets number from buffer.

      Returns undefined | number

      Number from buffer.

      -
    • Puts number into buffer.

      Parameters

      • number: number

        Number to put into buffer.

        -

      Returns void

    • Returns buffer as numbers' array.

      +

    Returns void

    +
    diff --git a/docs/classes/ClusterWorker.html b/docs/classes/ClusterWorker.html index 8a41aaab..e20d3c87 100644 --- a/docs/classes/ClusterWorker.html +++ b/docs/classes/ClusterWorker.html @@ -1,4 +1,4 @@ -ClusterWorker | poolifier - v4.3.0

    ClassClusterWorker<Data, Response>

    A cluster worker used by a poolifier ClusterPool.

    +ClusterWorker | poolifier - v4.4.0

    Class ClusterWorker<Data, Response>

    A cluster worker used by a poolifier ClusterPool.

    When this worker is inactive for more than the given maxInactiveTime, it will send a termination request to its main worker.

    If you use a DynamicClusterPool the extra workers that were created will be terminated, @@ -7,7 +7,7 @@ but the minimum number of workers will be guaranteed.

    2.0.0

    Type Parameters

    • Data = unknown

      Type of data this worker receives from pool's execution. This can only be structured-cloneable data.

    • Response = unknown

      Type of response the worker sends back to the main worker. This can only be structured-cloneable data.

      -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    activeInterval? isMain lastTaskTimestamp @@ -17,7 +17,7 @@ but the minimum number of workers will be guaranteed.

    Accessors

    Methods

    Constructors

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    -
    isMain: undefined | boolean

    Whether this is the main worker or not.

    -
    lastTaskTimestamp: number

    Timestamp of the last task processed by this worker.

    -
    opts: WorkerOptions = DEFAULT_WORKER_OPTIONS

    Options for the worker.

    -
    statistics?: WorkerStatistics

    Performance statistics computation requirements.

    -
    taskFunctions: Map<string, TaskFunctionObject<Data, Response>>

    Task function object(s) processed by the worker when the pool's execute method is invoked.

    -

    Accessors

    Methods

    Returns ClusterWorker<Data, Response>

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    +
    isMain: undefined | boolean

    Whether this is the main worker or not.

    +
    lastTaskTimestamp: number

    Timestamp of the last task processed by this worker.

    +
    opts: WorkerOptions = DEFAULT_WORKER_OPTIONS

    Options for the worker.

    +
    statistics?: WorkerStatistics

    Performance statistics computation requirements.

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

    Task function object(s) processed by the worker when the pool's execute method is invoked.

    +

    Accessors

    Methods

    • Handles an error and convert it to a string so it can be sent back to the main worker.

      +
    • Handles an error and convert it if needed to its message string. +Error are not structured-cloneable and cannot be sent to the main worker.

      Parameters

      • error: string | Error

        The error raised by the worker.

      Returns string

      The error message.

      -
    • Handles the ready message sent by the main worker.

      +

    Returns void

    Returns void

    Returns void

    • Runs the given task function asynchronously.

      +

    Returns void

    • Runs the given task function synchronously.

      +

    Returns void

    • Sends a message to main worker.

      +

    Returns void

    Returns void

    +
    diff --git a/docs/classes/DynamicClusterPool.html b/docs/classes/DynamicClusterPool.html index 31e2b3b1..fd832501 100644 --- a/docs/classes/DynamicClusterPool.html +++ b/docs/classes/DynamicClusterPool.html @@ -1,11 +1,11 @@ -DynamicClusterPool | poolifier - v4.3.0

    ClassDynamicClusterPool<Data, Response>

    A cluster pool with a dynamic number of workers, but a guaranteed minimum number of workers.

    +DynamicClusterPool | poolifier - v4.4.0

    Class DynamicClusterPool<Data, Response>

    A cluster pool with a dynamic number of workers, but a guaranteed minimum number of workers.

    This cluster pool creates new workers when the others are busy, up to the maximum number of workers. When the maximum number of workers is reached and workers are busy, an event is emitted. If you want to listen to this event, use the pool's emitter.

    2.0.0

    Type Parameters

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

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    emitter? filePath maximumNumberOfWorkers? @@ -59,7 +59,7 @@ When the maximum number of workers is reached and workers are busy, an event is
  • max: number

    Maximum number of workers that can be created by this pool.

  • filePath: string

    Path to an implementation of a ClusterWorker file, which can be relative or absolute.

  • opts: ClusterPoolOptions = {}

    Options for this dynamic cluster pool.

    -
  • Returns DynamicClusterPool<Data, Response>

    Properties

    emitter?: EventEmitterAsyncResource

    Pool event emitter integrated with async resource. +

    Returns DynamicClusterPool<Data, Response>

    Properties

    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:

      @@ -75,92 +75,92 @@ The async tracking tooling identifier is poolifier:<PoolType>-<Wo
    • 'backPressure': Emitted when the number of workers created in the pool has reached the maximum size expected and are back pressured (i.e. their tasks queue is full: queue size >= maximum queue size).
    • 'backPressureEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer back pressured (i.e. their tasks queue is no longer full: queue size < maximum queue size).
    -
    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.

    -
    opts: PoolOptions<Worker>

    Options for the pool.

    -
    promiseResponseMap: Map<`${string}-${string}-${string}-${string}-${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.

    +
    opts: PoolOptions<Worker>

    Options for the pool.

    +
    promiseResponseMap: Map<`${string}-${string}-${string}-${string}-${string}`, PromiseResponseWrapper<Response>> = ...

    The task execution response promise map:

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

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

    -
    workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

    Worker choice strategies context referencing worker choice algorithms implementation.

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

    Pool worker nodes.

    -

    Accessors

    workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

    Worker choice strategies context referencing worker choice algorithms implementation.

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

    Pool worker nodes.

    +

    Accessors

    • get backPressure(): boolean
    • Whether the pool is back pressured or not.

      Returns boolean

      The pool back pressure boolean status.

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

      Returns boolean

      The pool busyness boolean status.

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

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

      -

      Returns "fixed" | "dynamic"

    • get worker(): "cluster" | "thread"
    • The worker type.

      -

      Returns "cluster" | "thread"

    Methods

    • Parameters

    • get worker(): "cluster" | "thread"
    • The worker type.

      +

      Returns "cluster" | "thread"

    Methods

    • Method hooked up after a worker node has been newly created. +

    Returns void

    • Hook executed before the worker task execution. +

    Returns void

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

      +

    Returns void

    • Terminates the worker node given its worker node key.

      +

    Returns void

    • Parameters

      • Optionaldata: Data

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

      • Optionalname: string

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

      • OptionaltransferList: readonly TransferListItem[]

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

      Returns Promise<Response>

      Promise with a task function response that will be fulfilled when the task is completed.

      -
    • Parameters

      • data: Iterable<Data, any, any>

        The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

      • Optionalname: string

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

      • OptionaltransferList: readonly TransferListItem[]

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

      Returns Promise<Response[]>

      Promise with an array of task function responses that will be fulfilled when the tasks are completed.

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

      +

    Returns void

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

      +

    Returns void

    • Parameters

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

      Returns void

    • Parameters

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

      Returns void

    +

    Returns void

    diff --git a/docs/classes/DynamicThreadPool.html b/docs/classes/DynamicThreadPool.html index 0b6d4d52..3b0c8deb 100644 --- a/docs/classes/DynamicThreadPool.html +++ b/docs/classes/DynamicThreadPool.html @@ -1,11 +1,11 @@ -DynamicThreadPool | poolifier - v4.3.0

    ClassDynamicThreadPool<Data, Response>

    A thread pool with a dynamic number of threads, but a guaranteed minimum number of threads.

    +DynamicThreadPool | poolifier - v4.4.0

    Class DynamicThreadPool<Data, Response>

    A thread pool with a dynamic number of threads, but a guaranteed minimum number of threads.

    This thread pool creates new threads when the others are busy, up to the maximum number of threads. When the maximum number of threads is reached and workers are busy, an event is emitted. If you want to listen to this event, use the pool's emitter.

    0.0.1

    Type Parameters

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

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    emitter? filePath maximumNumberOfWorkers? @@ -59,7 +59,7 @@ When the maximum number of threads is reached and workers are busy, an event is
  • max: number

    Maximum number of threads that can be created by this pool.

  • filePath: string

    Path to an implementation of a ThreadWorker file, which can be relative or absolute.

  • opts: ThreadPoolOptions = {}

    Options for this dynamic thread pool.

    -
  • Returns DynamicThreadPool<Data, Response>

    Properties

    emitter?: EventEmitterAsyncResource

    Pool event emitter integrated with async resource. +

    Returns DynamicThreadPool<Data, Response>

    Properties

    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:

      @@ -75,93 +75,93 @@ The async tracking tooling identifier is poolifier:<PoolType>-<Wo
    • 'backPressure': Emitted when the number of workers created in the pool has reached the maximum size expected and are back pressured (i.e. their tasks queue is full: queue size >= maximum queue size).
    • 'backPressureEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer back pressured (i.e. their tasks queue is no longer full: queue size < maximum queue size).
    -
    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.

    -
    opts: PoolOptions<Worker>

    Options for the pool.

    -
    promiseResponseMap: Map<`${string}-${string}-${string}-${string}-${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.

    +
    opts: PoolOptions<Worker>

    Options for the pool.

    +
    promiseResponseMap: Map<`${string}-${string}-${string}-${string}-${string}`, PromiseResponseWrapper<Response>> = ...

    The task execution response promise map:

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

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

    -
    workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

    Worker choice strategies context referencing worker choice algorithms implementation.

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

    Pool worker nodes.

    -

    Accessors

    workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

    Worker choice strategies context referencing worker choice algorithms implementation.

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

    Pool worker nodes.

    +

    Accessors

    • get backPressure(): boolean
    • Whether the pool is back pressured or not.

      Returns boolean

      The pool back pressure boolean status.

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

      Returns boolean

      The pool busyness boolean status.

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

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

      -

      Returns "fixed" | "dynamic"

    • get worker(): "cluster" | "thread"
    • The worker type.

      -

      Returns "cluster" | "thread"

    Methods

    • Parameters

    • get worker(): "cluster" | "thread"
    • The worker type.

      +

      Returns "cluster" | "thread"

    Methods

    • Method hooked up after a worker node has been newly created. +

    Returns void

    • Hook executed before the worker task execution. +

    Returns void

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

      +

    Returns void

    • Terminates the worker node given its worker node key.

      +

    Returns void

    • Parameters

      • Optionaldata: Data

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

      • Optionalname: string

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

      • OptionaltransferList: readonly TransferListItem[]

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

      Returns Promise<Response>

      Promise with a task function response that will be fulfilled when the task is completed.

      -
    • Parameters

      • data: Iterable<Data, any, any>

        The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

      • Optionalname: string

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

      • OptionaltransferList: readonly TransferListItem[]

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

      Returns Promise<Response[]>

      Promise with an array of task function responses that will be fulfilled when the tasks are completed.

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

      +

    Returns void

    • Sends a message to worker given its 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.

      • OptionaltransferList: readonly TransferListItem[]

        The optional array of transferable objects.

        -

      Returns void

    • Parameters

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

      Returns void

    • Parameters

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

      Returns void

    +

    Returns void

    diff --git a/docs/classes/FixedClusterPool.html b/docs/classes/FixedClusterPool.html index eac9c0bc..155c89c8 100644 --- a/docs/classes/FixedClusterPool.html +++ b/docs/classes/FixedClusterPool.html @@ -1,9 +1,9 @@ -FixedClusterPool | poolifier - v4.3.0

    ClassFixedClusterPool<Data, Response>

    A cluster pool with a fixed number of workers.

    +FixedClusterPool | poolifier - v4.4.0

    Class FixedClusterPool<Data, Response>

    A cluster pool with a fixed number of workers.

    2.0.0

    Type Parameters

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

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

  • filePath: string

    Path to an implementation of a ClusterWorker file, which can be relative or absolute.

  • opts: ClusterPoolOptions = {}

    Options for this fixed cluster pool.

  • OptionalmaximumNumberOfWorkers: number

    The maximum number of workers for this pool.

    -
  • Returns FixedClusterPool<Data, Response>

    Properties

    emitter?: EventEmitterAsyncResource

    Pool event emitter integrated with async resource. +

    Returns FixedClusterPool<Data, Response>

    Properties

    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:

      @@ -73,92 +73,92 @@ The async tracking tooling identifier is poolifier:<PoolType>-<Wo
    • 'backPressure': Emitted when the number of workers created in the pool has reached the maximum size expected and are back pressured (i.e. their tasks queue is full: queue size >= maximum queue size).
    • 'backPressureEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer back pressured (i.e. their tasks queue is no longer full: queue size < maximum queue size).
    -
    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.

    -
    opts: PoolOptions<Worker>

    Options for the pool.

    -
    promiseResponseMap: Map<`${string}-${string}-${string}-${string}-${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.

    +
    opts: PoolOptions<Worker>

    Options for the pool.

    +
    promiseResponseMap: Map<`${string}-${string}-${string}-${string}-${string}`, PromiseResponseWrapper<Response>> = ...

    The task execution response promise map:

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

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

    -
    workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

    Worker choice strategies context referencing worker choice algorithms implementation.

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

    Pool worker nodes.

    -

    Accessors

    workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

    Worker choice strategies context referencing worker choice algorithms implementation.

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

    Pool worker nodes.

    +

    Accessors

    • get backPressure(): boolean
    • Whether the pool is back pressured or not.

      Returns boolean

      The pool back pressure boolean status.

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

      Returns boolean

      The pool busyness boolean status.

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

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

      -

      Returns "fixed" | "dynamic"

    • get worker(): "cluster" | "thread"
    • The worker type.

      -

      Returns "cluster" | "thread"

    Methods

    • Parameters

    • get worker(): "cluster" | "thread"
    • The worker type.

      +

      Returns "cluster" | "thread"

    Methods

    • Method hooked up after a worker node has been newly created. +

    Returns void

    • Hook executed before the worker task execution. +

    Returns void

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

      +

    Returns void

    • Terminates the worker node given its worker node key.

      +

    Returns void

    • Parameters

      • Optionaldata: Data

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

      • Optionalname: string

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

      • OptionaltransferList: readonly TransferListItem[]

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

      Returns Promise<Response>

      Promise with a task function response that will be fulfilled when the task is completed.

      -
    • Parameters

      • data: Iterable<Data, any, any>

        The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

      • Optionalname: string

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

      • OptionaltransferList: readonly TransferListItem[]

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

      Returns Promise<Response[]>

      Promise with an array of task function responses that will be fulfilled when the tasks are completed.

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

      +

    Returns void

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

      +

    Returns void

    • Parameters

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

      Returns void

    • Parameters

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

      Returns void

    +

    Returns void

    diff --git a/docs/classes/FixedThreadPool.html b/docs/classes/FixedThreadPool.html index adcb4a43..f0618c6d 100644 --- a/docs/classes/FixedThreadPool.html +++ b/docs/classes/FixedThreadPool.html @@ -1,9 +1,9 @@ -FixedThreadPool | poolifier - v4.3.0

    ClassFixedThreadPool<Data, Response>

    A thread pool with a fixed number of threads.

    +FixedThreadPool | poolifier - v4.4.0

    Class FixedThreadPool<Data, Response>

    A thread pool with a fixed number of threads.

    0.0.1

    Type Parameters

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

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

  • filePath: string

    Path to an implementation of a ThreadWorker file, which can be relative or absolute.

  • opts: ThreadPoolOptions = {}

    Options for this fixed thread pool.

  • OptionalmaximumNumberOfThreads: number

    The maximum number of threads for this pool.

    -
  • Returns FixedThreadPool<Data, Response>

    Properties

    emitter?: EventEmitterAsyncResource

    Pool event emitter integrated with async resource. +

    Returns FixedThreadPool<Data, Response>

    Properties

    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:

      @@ -73,93 +73,93 @@ The async tracking tooling identifier is poolifier:<PoolType>-<Wo
    • 'backPressure': Emitted when the number of workers created in the pool has reached the maximum size expected and are back pressured (i.e. their tasks queue is full: queue size >= maximum queue size).
    • 'backPressureEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer back pressured (i.e. their tasks queue is no longer full: queue size < maximum queue size).
    -
    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.

    -
    opts: PoolOptions<Worker>

    Options for the pool.

    -
    promiseResponseMap: Map<`${string}-${string}-${string}-${string}-${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.

    +
    opts: PoolOptions<Worker>

    Options for the pool.

    +
    promiseResponseMap: Map<`${string}-${string}-${string}-${string}-${string}`, PromiseResponseWrapper<Response>> = ...

    The task execution response promise map:

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

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

    -
    workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

    Worker choice strategies context referencing worker choice algorithms implementation.

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

    Pool worker nodes.

    -

    Accessors

    workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

    Worker choice strategies context referencing worker choice algorithms implementation.

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

    Pool worker nodes.

    +

    Accessors

    • get backPressure(): boolean
    • Whether the pool is back pressured or not.

      Returns boolean

      The pool back pressure boolean status.

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

      Returns boolean

      The pool busyness boolean status.

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

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

      -

      Returns "fixed" | "dynamic"

    • get worker(): "cluster" | "thread"
    • The worker type.

      -

      Returns "cluster" | "thread"

    Methods

    • Parameters

    • get worker(): "cluster" | "thread"
    • The worker type.

      +

      Returns "cluster" | "thread"

    Methods

    • Method hooked up after a worker node has been newly created. +

    Returns void

    • Hook executed before the worker task execution. +

    Returns void

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

      +

    Returns void

    • Terminates the worker node given its worker node key.

      +

    Returns void

    • Parameters

      • Optionaldata: Data

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

      • Optionalname: string

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

      • OptionaltransferList: readonly TransferListItem[]

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

      Returns Promise<Response>

      Promise with a task function response that will be fulfilled when the task is completed.

      -
    • Parameters

    • Parameters

      • data: Iterable<Data, any, any>

        The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

      • Optionalname: string

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

      • OptionaltransferList: readonly TransferListItem[]

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

      Returns Promise<Response[]>

      Promise with an array of task function responses that will be fulfilled when the tasks are completed.

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

      +

    Returns void

    • Sends a message to worker given its 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.

      • OptionaltransferList: readonly TransferListItem[]

        The optional array of transferable objects.

        -

      Returns void

    • Parameters

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

      Returns void

    • Parameters

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

      Returns void

    +

    Returns void

    diff --git a/docs/classes/PriorityQueue.html b/docs/classes/PriorityQueue.html index a4f02095..0cef3a42 100644 --- a/docs/classes/PriorityQueue.html +++ b/docs/classes/PriorityQueue.html @@ -1,6 +1,6 @@ -PriorityQueue | poolifier - v4.3.0

    ClassPriorityQueue<T>Internal

    Priority queue.

    +PriorityQueue | poolifier - v4.4.0

    Class PriorityQueue<T>Internal

    Priority queue.

    Type Parameters

    • T

      Type of priority queue data.

      -

    Constructors

    Constructors

    Properties

    Accessors

    buckets enablePriority @@ -19,24 +19,24 @@
    false
     
    -

    Properties

    maxSize: number

    The priority queue maximum size.

    -

    Accessors

    • get buckets(): number
    • The number of filled prioritized buckets.

      +

    Properties

    maxSize: number

    The priority queue maximum size.

    +

    Accessors

    • get buckets(): number
    • The number of filled prioritized buckets.

      Returns number

      The number of filled prioritized buckets.

      -
    • get size(): number
    • The priority queue size.

      +

    Returns void

    Methods

    Methods

    • Dequeue data from the priority queue.

      +
    • Dequeue data from the priority queue.

      Parameters

      • Optionalbucket: number

        The prioritized bucket to dequeue from.

      Returns undefined | T

      The dequeued data or undefined if the priority queue is empty.

      -
    • Enqueue data into the priority queue.

      Parameters

      • data: T

        Data to enqueue.

      • Optionalpriority: number

        Priority of the data. Lower values have higher priority.

      Returns number

      The new size of the priority queue.

      -
    +
    diff --git a/docs/classes/ThreadWorker.html b/docs/classes/ThreadWorker.html index f0ffc52b..abef624b 100644 --- a/docs/classes/ThreadWorker.html +++ b/docs/classes/ThreadWorker.html @@ -1,4 +1,4 @@ -ThreadWorker | poolifier - v4.3.0

    ClassThreadWorker<Data, Response>

    A thread worker used by a poolifier ThreadPool.

    +ThreadWorker | poolifier - v4.4.0

    Class ThreadWorker<Data, Response>

    A thread worker used by a poolifier ThreadPool.

    When this worker is inactive for more than the given maxInactiveTime, it will send a termination request to its main thread.

    If you use a DynamicThreadPool the extra workers that were created will be terminated, @@ -7,7 +7,7 @@ but the minimum number of workers will be guaranteed.

    0.0.1

    Type Parameters

    • Data = unknown

      Type of data this worker receives from pool's execution. This can only be structured-cloneable data.

    • Response = unknown

      Type of response the worker sends back to the main thread. This can only be structured-cloneable data.

      -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    activeInterval? isMain lastTaskTimestamp @@ -17,7 +17,7 @@ but the minimum number of workers will be guaranteed.

    Accessors

    Methods

    Constructors

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    -
    isMain: undefined | boolean

    Whether this is the main worker or not.

    -
    lastTaskTimestamp: number

    Timestamp of the last task processed by this worker.

    -
    opts: WorkerOptions = DEFAULT_WORKER_OPTIONS

    Options for the worker.

    -
    statistics?: WorkerStatistics

    Performance statistics computation requirements.

    -
    taskFunctions: Map<string, TaskFunctionObject<Data, Response>>

    Task function object(s) processed by the worker when the pool's execute method is invoked.

    -

    Accessors

    Methods

    Returns ThreadWorker<Data, Response>

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    +
    isMain: undefined | boolean

    Whether this is the main worker or not.

    +
    lastTaskTimestamp: number

    Timestamp of the last task processed by this worker.

    +
    opts: WorkerOptions = DEFAULT_WORKER_OPTIONS

    Options for the worker.

    +
    statistics?: WorkerStatistics

    Performance statistics computation requirements.

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

    Task function object(s) processed by the worker when the pool's execute method is invoked.

    +

    Accessors

    Methods

    • Handles an error and convert it to a string so it can be sent back to the main worker.

      +
    • Handles an error and convert it if needed to its message string. +Error are not structured-cloneable and cannot be sent to the main worker.

      Parameters

      • error: string | Error

        The error raised by the worker.

      Returns string

      The error message.

      -
    • Handles the ready message sent by the main worker.

      +

    Returns void

    Returns void

    Returns void

    • Runs the given task function asynchronously.

      +

    Returns void

    • Runs the given task function synchronously.

      +

    Returns void

    • Sends a message to main worker.

      +

    Returns void

    Returns void

    +
    diff --git a/docs/classes/WorkerChoiceStrategiesContext.html b/docs/classes/WorkerChoiceStrategiesContext.html index 918b4d4d..7f1968fa 100644 --- a/docs/classes/WorkerChoiceStrategiesContext.html +++ b/docs/classes/WorkerChoiceStrategiesContext.html @@ -1,8 +1,8 @@ -WorkerChoiceStrategiesContext | poolifier - v4.3.0

    ClassWorkerChoiceStrategiesContext<Worker, Data, Response>Internal

    The worker choice strategies context.

    +WorkerChoiceStrategiesContext | poolifier - v4.4.0

    Class WorkerChoiceStrategiesContext<Worker, Data, Response>Internal

    The worker choice strategies context.

    Type Parameters

    • Worker extends IWorker

      Type of worker.

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

      -

    Constructors

    Constructors

    Properties

    Methods

    execute getPolicy @@ -19,30 +19,30 @@

    Returns WorkerChoiceStrategiesContext<Worker, Data, Response>

    [WorkerChoiceStrategies.ROUND_ROBIN]
     
    -

    Properties

    retriesCount: number

    The number of worker choice strategies execution retries.

    -

    Methods

    • Executes the given worker choice strategy in the context algorithm.

      +

    Properties

    retriesCount: number

    The number of worker choice strategies execution retries.

    +

    Methods

    • Executes the given worker choice strategy in the context algorithm.

      Parameters

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

        The worker choice strategy algorithm to execute.

      Returns number

      The key of the worker node.

      this.defaultWorkerChoiceStrategy
       

      https://nodejs.org/api/errors.html#class-error If after computed retries the worker node key is null or undefined.

      -
    • Gets the active worker choice strategies in the context policy.

      +
    • Sets the default worker choice strategy to use in the context.

      Parameters

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

        The default worker choice strategy to set.

      • Optionalopts: WorkerChoiceStrategyOptions

        The worker choice strategy options.

        -

      Returns void

    • Sets the active worker choice strategies in the context options.

      +

    Returns void

    • Synchronizes the active worker choice strategies in the context with the given worker choice strategies.

      +

    Returns void

    • Synchronizes the active worker choice strategies in the context with the given worker choice strategies.

      Parameters

      • workerChoiceStrategies: Set<
            | "FAIR_SHARE"
            | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
            | "LEAST_BUSY"
            | "LEAST_ELU"
            | "LEAST_USED"
            | "ROUND_ROBIN"
            | "WEIGHTED_ROUND_ROBIN">

        The worker choice strategies to synchronize.

      • Optionalopts: WorkerChoiceStrategyOptions

        The worker choice strategy options.

        -

      Returns void

    • Updates the worker node key in the active worker choice strategies in the context internals.

      +

    Returns void

    +
    diff --git a/docs/functions/availableParallelism.html b/docs/functions/availableParallelism.html index 36dce3f1..5ca6ad6e 100644 --- a/docs/functions/availableParallelism.html +++ b/docs/functions/availableParallelism.html @@ -1,4 +1,4 @@ -availableParallelism | poolifier - v4.3.0

    FunctionavailableParallelism

    Returns safe host OS optimized estimate of the default amount of parallelism a pool should use. +availableParallelism | poolifier - v4.4.0

    Function availableParallelism

    Returns safe host OS optimized estimate of the default amount of parallelism a pool should use. Always returns a value greater than zero.

    • Returns number

      The host OS optimized maximum pool size.

      -
    +
    diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 4f8113ad..e7723584 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1 +1 @@ -poolifier - v4.3.0
    +poolifier - v4.4.0
    diff --git a/docs/index.html b/docs/index.html index 185a3c16..a6d3e1f4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ -poolifier - v4.3.0

    poolifier - v4.3.0

    Index

    Classes

    AbstractPool +poolifier - v4.4.0
    +
    diff --git a/docs/interfaces/EventLoopUtilizationMeasurementStatistics.html b/docs/interfaces/EventLoopUtilizationMeasurementStatistics.html index 8a07d217..cb5ed605 100644 --- a/docs/interfaces/EventLoopUtilizationMeasurementStatistics.html +++ b/docs/interfaces/EventLoopUtilizationMeasurementStatistics.html @@ -1,5 +1,5 @@ -EventLoopUtilizationMeasurementStatistics | poolifier - v4.3.0

    InterfaceEventLoopUtilizationMeasurementStatisticsInternal

    Event loop utilization measurement statistics.

    -
    interface EventLoopUtilizationMeasurementStatistics {
        active: MeasurementStatistics;
        idle: MeasurementStatistics;
        utilization?: number;
    }

    Properties

    active +EventLoopUtilizationMeasurementStatistics | poolifier - v4.4.0

    Interface EventLoopUtilizationMeasurementStatisticsInternal

    Event loop utilization measurement statistics.

    +
    interface EventLoopUtilizationMeasurementStatistics {
        active: MeasurementStatistics;
        idle: MeasurementStatistics;
        utilization?: number;
    }

    Properties

    utilization?: number
    +

    Properties

    utilization?: number
    diff --git a/docs/interfaces/FixedQueueNode.html b/docs/interfaces/FixedQueueNode.html index 1ac16d6a..a3d5f6ba 100644 --- a/docs/interfaces/FixedQueueNode.html +++ b/docs/interfaces/FixedQueueNode.html @@ -1,5 +1,5 @@ -FixedQueueNode | poolifier - v4.3.0

    InterfaceFixedQueueNode<T>Internal

    Fixed queue node.

    +FixedQueueNode | poolifier - v4.4.0

    Interface FixedQueueNode<T>Internal

    Fixed queue node.

    interface FixedQueueNode<T> {
        data: T;
        priority: number;
    }

    Type Parameters

    • T

      Type of fixed queue node data.

      -

    Properties

    Properties

    Properties

    data: T
    priority: number
    +

    Properties

    data: T
    priority: number
    diff --git a/docs/interfaces/IFixedQueue.html b/docs/interfaces/IFixedQueue.html index 027f6d29..43dcfc02 100644 --- a/docs/interfaces/IFixedQueue.html +++ b/docs/interfaces/IFixedQueue.html @@ -1,6 +1,6 @@ -IFixedQueue | poolifier - v4.3.0

    InterfaceIFixedQueue<T>Internal

    Fixed queue.

    +IFixedQueue | poolifier - v4.4.0

    Interface IFixedQueue<T>Internal

    Fixed queue.

    interface IFixedQueue<T> {
        [iterator]: (() => Iterator<T, any, any>);
        capacity: number;
        clear: (() => void);
        dequeue: (() => undefined | T);
        empty: (() => boolean);
        enqueue: ((data: T, priority?: number) => number);
        full: (() => boolean);
        get: ((index: number) => undefined | T);
        nodeArray: FixedQueueNode<T>[];
        size: number;
    }

    Type Parameters

    • T

      Type of fixed queue data.

      -

    Properties

    Properties

    [iterator] capacity clear dequeue @@ -13,22 +13,22 @@

    Properties

    [iterator]: (() => Iterator<T, any, any>)

    Returns an iterator for the fixed queue.

    Type declaration

      • (): Iterator<T, any, any>
      • Returns Iterator<T, any, any>

        An iterator for the fixed queue.

    capacity: number

    The fixed queue capacity.

    -
    clear: (() => void)

    Clears the fixed queue.

    -
    dequeue: (() => undefined | T)

    Dequeue data from the fixed queue.

    +
    capacity: number

    The fixed queue capacity.

    +
    clear: (() => void)

    Clears the fixed queue.

    +
    dequeue: (() => undefined | T)

    Dequeue data from the fixed queue.

    Type declaration

      • (): undefined | T
      • Returns undefined | T

        The dequeued data or undefined if the fixed queue is empty.

        -
    empty: (() => boolean)

    Checks if the fixed queue is empty.

    +
    empty: (() => boolean)

    Checks if the fixed queue is empty.

    Type declaration

      • (): boolean
      • Returns boolean

        true if the fixed queue is empty, false otherwise.

        -
    enqueue: ((data: T, priority?: number) => number)

    Enqueue data into the fixed queue.

    +
    enqueue: ((data: T, priority?: number) => number)

    Enqueue data into the fixed queue.

    Type declaration

      • (data, priority?): number
      • Parameters

        • data: T

          Data to enqueue.

        • Optionalpriority: number

          Priority of the data. Lower values have higher priority.

        Returns number

        The new size of the fixed queue.

    If the fixed queue is full.

    -
    full: (() => boolean)

    Checks if the fixed queue is full.

    +
    full: (() => boolean)

    Checks if the fixed queue is full.

    Type declaration

      • (): boolean
      • Returns boolean

        true if the fixed queue is full, false otherwise.

        -
    get: ((index: number) => undefined | T)

    Gets data from the fixed queue.

    +
    get: ((index: number) => undefined | T)

    Gets data from the fixed queue.

    Type declaration

      • (index): undefined | T
      • Parameters

        • index: number

          The index of the data to get.

        Returns undefined | T

        The data at the index or undefined if the fixed queue is empty or the index is out of bounds.

        -
    nodeArray: FixedQueueNode<T>[]

    The fixed queue node array.

    -
    size: number

    The fixed queue size.

    -
    +
    nodeArray: FixedQueueNode<T>[]

    The fixed queue node array.

    +
    size: number

    The fixed queue size.

    +
    diff --git a/docs/interfaces/IPool.html b/docs/interfaces/IPool.html index bff79d1f..c18c37cb 100644 --- a/docs/interfaces/IPool.html +++ b/docs/interfaces/IPool.html @@ -1,8 +1,8 @@ -IPool | poolifier - v4.3.0

    InterfaceIPool<Worker, Data, Response>

    Contract definition for a poolifier pool.

    +IPool | poolifier - v4.4.0

    Interface IPool<Worker, Data, Response>

    Contract definition for a poolifier pool.

    interface IPool<Worker, Data, Response> {
        addTaskFunction: ((name: string, fn: TaskFunction<Data, Response> | TaskFunctionObject<Data, Response>) => Promise<boolean>);
        destroy: (() => Promise<void>);
        emitter?: EventEmitterAsyncResource;
        enableTasksQueue: ((enable: boolean, tasksQueueOptions?: TasksQueueOptions) => void);
        execute: ((data?: Data, name?: string, transferList?: readonly TransferListItem[]) => Promise<Response>);
        hasTaskFunction: ((name: string) => boolean);
        info: PoolInfo;
        listTaskFunctionsProperties: (() => TaskFunctionProperties[]);
        mapExecute: ((data: Iterable<Data, any, any>, name?: string, transferList?: readonly TransferListItem[]) => Promise<Response[]>);
        removeTaskFunction: ((name: string) => Promise<boolean>);
        setDefaultTaskFunction: ((name: string) => Promise<boolean>);
        setTasksQueueOptions: ((tasksQueueOptions: TasksQueueOptions) => void);
        setWorkerChoiceStrategy: ((workerChoiceStrategy:
            | "FAIR_SHARE"
            | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
            | "LEAST_BUSY"
            | "LEAST_ELU"
            | "LEAST_USED"
            | "ROUND_ROBIN"
            | "WEIGHTED_ROUND_ROBIN", workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions) => void);
        setWorkerChoiceStrategyOptions: ((workerChoiceStrategyOptions: WorkerChoiceStrategyOptions) => boolean);
        start: (() => void);
        workerNodes: IWorkerNode<Worker, Data>[];
    }

    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.

      -

    Implemented by

    Properties

    Implemented by

    Properties

    addTaskFunction destroy emitter? enableTasksQueue @@ -25,8 +25,8 @@ If a task function with the same name already exists, it will be overwritten.

    Returns Promise<boolean>

    true if the task function was added, false otherwise.

    https://nodejs.org/api/errors.html#class-typeerror If the name parameter is not a string or an empty string.

    https://nodejs.org/api/errors.html#class-typeerror If the fn parameter is not a function or task function object.

    -
    destroy: (() => Promise<void>)

    Terminates all workers in this pool.

    -
    emitter?: EventEmitterAsyncResource

    Pool event emitter integrated with async resource. +

    destroy: (() => Promise<void>)

    Terminates all workers in this pool.

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

      @@ -42,39 +42,39 @@ The async tracking tooling identifier is poolifier:<PoolType>-<Wo
    • 'backPressure': Emitted when the number of workers created in the pool has reached the maximum size expected and are back pressured (i.e. their tasks queue is full: queue size >= maximum queue size).
    • 'backPressureEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer back pressured (i.e. their tasks queue is no longer full: queue size < maximum queue size).
    -
    enableTasksQueue: ((enable: boolean, tasksQueueOptions?: TasksQueueOptions) => void)

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

    +
    enableTasksQueue: ((enable: boolean, tasksQueueOptions?: TasksQueueOptions) => void)

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

    Type declaration

      • (enable, tasksQueueOptions?): void
      • Parameters

        • enable: boolean

          Whether to enable or disable the worker node tasks queue.

        • OptionaltasksQueueOptions: TasksQueueOptions

          The worker node tasks queue options.

          -

        Returns void

    execute: ((data?: Data, name?: string, transferList?: readonly TransferListItem[]) => Promise<Response>)

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

    +

    Returns void

    execute: ((data?: Data, name?: string, transferList?: readonly TransferListItem[]) => Promise<Response>)

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

    Type declaration

      • (data?, name?, transferList?): Promise<Response>
      • Parameters

        • Optionaldata: Data

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

        • Optionalname: string

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

        • OptionaltransferList: readonly TransferListItem[]

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

        Returns Promise<Response>

        Promise with a task function response that will be fulfilled when the task is completed.

        -
    hasTaskFunction: ((name: string) => boolean)

    Whether the specified task function exists in this pool.

    +
    hasTaskFunction: ((name: string) => boolean)

    Whether the specified task function exists in this pool.

    Type declaration

      • (name): boolean
      • Parameters

        • name: string

          The name of the task function.

        Returns boolean

        true if the task function exists, false otherwise.

        -
    info: PoolInfo

    Pool information.

    -
    listTaskFunctionsProperties: (() => TaskFunctionProperties[])

    Lists the properties of task functions available in this pool.

    +
    info: PoolInfo

    Pool information.

    +
    listTaskFunctionsProperties: (() => TaskFunctionProperties[])

    Lists the properties of task functions available in this pool.

    Type declaration

    mapExecute: ((data: Iterable<Data, any, any>, name?: string, transferList?: readonly TransferListItem[]) => Promise<Response[]>)

    Executes the specified function in the worker constructor with the tasks data iterable input parameter.

    +
    mapExecute: ((data: Iterable<Data, any, any>, name?: string, transferList?: readonly TransferListItem[]) => Promise<Response[]>)

    Executes the specified function in the worker constructor with the tasks data iterable input parameter.

    Type declaration

      • (data, name?, transferList?): Promise<Response[]>
      • Parameters

        • data: Iterable<Data, any, any>

          The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

        • Optionalname: string

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

        • OptionaltransferList: readonly TransferListItem[]

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

        Returns Promise<Response[]>

        Promise with an array of task function responses that will be fulfilled when the tasks are completed.

        -
    removeTaskFunction: ((name: string) => Promise<boolean>)

    Removes a task function from this pool.

    +
    removeTaskFunction: ((name: string) => Promise<boolean>)

    Removes a task function from this pool.

    Type declaration

      • (name): Promise<boolean>
      • Parameters

        • name: string

          The name of the task function.

        Returns Promise<boolean>

        true if the task function was removed, false otherwise.

        -
    setDefaultTaskFunction: ((name: string) => Promise<boolean>)

    Sets the default task function in this pool.

    +
    setDefaultTaskFunction: ((name: string) => Promise<boolean>)

    Sets the default task function in this pool.

    Type declaration

      • (name): Promise<boolean>
      • Parameters

        • name: string

          The name of the task function.

        Returns Promise<boolean>

        true if the default task function was set, false otherwise.

        -
    setTasksQueueOptions: ((tasksQueueOptions: TasksQueueOptions) => void)

    Sets the worker node tasks queue options in this pool.

    +
    setTasksQueueOptions: ((tasksQueueOptions: TasksQueueOptions) => void)

    Sets the worker node tasks queue options in this pool.

    Type declaration

      • (tasksQueueOptions): void
      • Parameters

        Returns void

    setWorkerChoiceStrategy: ((workerChoiceStrategy:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN", workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions) => void)

    Sets the default worker choice strategy in this pool.

    +

    Returns void

    setWorkerChoiceStrategy: ((workerChoiceStrategy:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN", workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions) => void)

    Sets the default worker choice strategy in this pool.

    Type declaration

      • (workerChoiceStrategy, workerChoiceStrategyOptions?): void
      • Parameters

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

          The default worker choice strategy.

        • OptionalworkerChoiceStrategyOptions: WorkerChoiceStrategyOptions

          The worker choice strategy options.

          -

        Returns void

    setWorkerChoiceStrategyOptions: ((workerChoiceStrategyOptions: WorkerChoiceStrategyOptions) => boolean)

    Sets the worker choice strategy options in this pool.

    +

    Returns void

    setWorkerChoiceStrategyOptions: ((workerChoiceStrategyOptions: WorkerChoiceStrategyOptions) => boolean)

    Sets the worker choice strategy options in this pool.

    Type declaration

      • (workerChoiceStrategyOptions): boolean
      • Parameters

        Returns boolean

        true if the worker choice strategy options were set, false otherwise.

        -
    start: (() => void)

    Starts the minimum number of workers in this pool.

    -
    workerNodes: IWorkerNode<Worker, Data>[]

    Pool worker nodes.

    -
    +
    start: (() => void)

    Starts the minimum number of workers in this pool.

    +
    workerNodes: IWorkerNode<Worker, Data>[]

    Pool worker nodes.

    +
    diff --git a/docs/interfaces/IWorker.html b/docs/interfaces/IWorker.html index 69bf4fc3..a4c1dd92 100644 --- a/docs/interfaces/IWorker.html +++ b/docs/interfaces/IWorker.html @@ -1,5 +1,5 @@ -IWorker | poolifier - v4.3.0

    InterfaceIWorker

    Worker interface.

    -
    interface IWorker {
        disconnect?: (() => void);
        id?: number;
        kill?: ((signal?: string) => void);
        on: ((event: string, handler: EventHandler<IWorker>) => this);
        once: ((event: string, handler: EventHandler<IWorker>) => this);
        terminate?: (() => Promise<number>);
        threadId?: number;
        unref?: (() => void);
        [captureRejectionSymbol]?<K>(error: Error, event: string | symbol, ...args: AnyRest): void;
        addListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        emit<K>(eventName: string | symbol, ...args: AnyRest): boolean;
        eventNames(): (string | symbol)[];
        getMaxListeners(): number;
        listenerCount<K>(eventName: string | symbol, listener?: Function): number;
        listeners<K>(eventName: string | symbol): Function[];
        off<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        prependListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        prependOnceListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        rawListeners<K>(eventName: string | symbol): Function[];
        removeAllListeners(eventName?: string | symbol): this;
        removeListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        setMaxListeners(n: number): this;
    }

    Hierarchy

    • EventEmitter
      • IWorker

    Properties

    disconnect? +IWorker | poolifier - v4.4.0

    Interface IWorker

    Worker interface.

    +
    interface IWorker {
        disconnect?: (() => void);
        id?: number;
        kill?: ((signal?: string) => void);
        on: ((event: string, handler: EventHandler<IWorker>) => this);
        once: ((event: string, handler: EventHandler<IWorker>) => this);
        terminate?: (() => Promise<number>);
        threadId?: number;
        unref?: (() => void);
        [captureRejectionSymbol]?<K>(error: Error, event: string | symbol, ...args: AnyRest): void;
        addListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        emit<K>(eventName: string | symbol, ...args: AnyRest): boolean;
        eventNames(): (string | symbol)[];
        getMaxListeners(): number;
        listenerCount<K>(eventName: string | symbol, listener?: Function): number;
        listeners<K>(eventName: string | symbol): Function[];
        off<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        prependListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        prependOnceListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        rawListeners<K>(eventName: string | symbol): Function[];
        removeAllListeners(eventName?: string | symbol): this;
        removeListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        setMaxListeners(n: number): this;
    }

    Hierarchy

    • EventEmitter
      • IWorker

    Properties

    Properties

    disconnect?: (() => void)

    Cluster worker disconnect.

    -
    id?: number

    Cluster worker id.

    -
    kill?: ((signal?: string) => void)

    Cluster worker kill.

    -
    on: ((event: string, handler: EventHandler<IWorker>) => this)

    Registers an event handler.

    +
    id?: number

    Cluster worker id.

    +
    kill?: ((signal?: string) => void)

    Cluster worker kill.

    +
    on: ((event: string, handler: EventHandler<IWorker>) => this)

    Registers an event handler.

    Type declaration

      • (event, handler): this
      • Parameters

        Returns this

    once: ((event: string, handler: EventHandler<IWorker>) => this)

    Registers once an event handler.

    +

    Returns this

    once: ((event: string, handler: EventHandler<IWorker>) => this)

    Registers once an event handler.

    Type declaration

      • (event, handler): this
      • Parameters

        Returns this

    terminate?: (() => Promise<number>)

    Stop all JavaScript execution in the worker thread as soon as possible. +

    Returns this

    terminate?: (() => Promise<number>)

    Stop all JavaScript execution in the worker thread as soon as possible. Returns a Promise for the exit code that is fulfilled when the 'exit' event is emitted.

    -
    threadId?: number

    Worker thread worker id.

    -
    unref?: (() => void)

    Calling unref() on a worker allows the thread to exit if this is the only +

    threadId?: number

    Worker thread worker id.

    +
    unref?: (() => void)

    Calling unref() on a worker allows the thread to exit if this is the only active handle in the event system. If the worker is already unref()ed callingunref() again has no effect.

    v10.5.0

    -

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Alias for emitter.on(eventName, listener).

      +

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Alias for emitter.on(eventName, listener).

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • Rest...args: AnyRest

      Returns boolean

      v0.1.26

      -
    • Returns an array listing the events for which the emitter has registered +

    • Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or Symbols.

      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ]

      Returns (string | symbol)[]

      v6.0.0

      -
    • Returns the current max listener value for the EventEmitter which is either +

    • Returns the current max listener value for the EventEmitter which is either set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

      Returns number

      v1.0.0

      -
    • Returns the number of listeners listening for the event named eventName. +

    • Returns the number of listeners listening for the event named eventName. If listener is provided, it will return how many times the listener is found in the list of the listeners of the event.

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event being listened for

      • Optionallistener: Function

        The event handler function

      Returns number

      v3.2.0

      -
    • Returns a copy of the array of listeners for the event named eventName.

      +
    • Returns a copy of the array of listeners for the event named eventName.

      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ]

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

      Returns Function[]

      v0.1.26

      -
    • Alias for emitter.removeListener().

      +
    • Alias for emitter.removeListener().

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v10.0.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -78,7 +78,7 @@ and listener will result in the listener being added,

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event.

      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -87,19 +87,19 @@ listener is removed, and then invoked.

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event.

      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v6.0.0

      -
    • Returns a copy of the array of listeners for the event named eventName, +

    • Returns a copy of the array of listeners for the event named eventName, including any wrappers (such as those created by .once()).

      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log');

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

      Returns Function[]

      v9.4.0

      -
    • Removes all listeners, or those of the specified eventName.

      +
    • Removes all listeners, or those of the specified eventName.

      It is bad practice to remove listeners added elsewhere in the code, particularly when the EventEmitter instance was created by some other component or module (e.g. sockets or file streams).

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • OptionaleventName: string | symbol

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -126,10 +126,10 @@ recently added instance. In the example the once('ping') listener i

      Returns a reference to the EventEmitter, so that calls can be chained.

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.26

      -
    • By default EventEmitters will print a warning if more than 10 listeners are +

    • By default EventEmitters will print a warning if more than 10 listeners are added for a particular event. This is a useful default that helps finding memory leaks. The emitter.setMaxListeners() method allows the limit to be modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • n: number

      Returns this

      v0.3.5

      -
    +
    diff --git a/docs/interfaces/IWorkerChoiceStrategy.html b/docs/interfaces/IWorkerChoiceStrategy.html index 2fcbefab..9b382ac0 100644 --- a/docs/interfaces/IWorkerChoiceStrategy.html +++ b/docs/interfaces/IWorkerChoiceStrategy.html @@ -1,5 +1,5 @@ -IWorkerChoiceStrategy | poolifier - v4.3.0

    InterfaceIWorkerChoiceStrategyInternal

    Worker choice strategy interface.

    -
    interface IWorkerChoiceStrategy {
        choose: (() => undefined | number);
        remove: ((workerNodeKey: number) => boolean);
        reset: (() => boolean);
        setOptions: ((opts: undefined | WorkerChoiceStrategyOptions) => void);
        strategyPolicy: StrategyPolicy;
        taskStatisticsRequirements: TaskStatisticsRequirements;
        update: ((workerNodeKey: number) => boolean);
    }

    Properties

    choose +IWorkerChoiceStrategy | poolifier - v4.4.0

    Interface IWorkerChoiceStrategyInternal

    Worker choice strategy interface.

    +
    interface IWorkerChoiceStrategy {
        choose: (() => undefined | number);
        remove: ((workerNodeKey: number) => boolean);
        reset: (() => boolean);
        setOptions: ((opts: undefined | WorkerChoiceStrategyOptions) => void);
        strategyPolicy: StrategyPolicy;
        taskStatisticsRequirements: TaskStatisticsRequirements;
        update: ((workerNodeKey: number) => boolean);
    }

    Properties

    choose remove reset setOptions @@ -10,16 +10,16 @@ If no worker nodes are not eligible, undefined is returned. If undefined is returned, the caller retry.

    Type declaration

      • (): undefined | number
      • Returns undefined | number

        The worker node key or undefined.

        -
    remove: ((workerNodeKey: number) => boolean)

    Removes the worker node key from strategy internals.

    +
    remove: ((workerNodeKey: number) => boolean)

    Removes the worker node key from strategy internals.

    Type declaration

      • (workerNodeKey): boolean
      • Parameters

        • workerNodeKey: number

          The worker node key.

        Returns boolean

        true if the worker node key is removed, false otherwise.

        -
    reset: (() => boolean)

    Resets strategy internals.

    +
    reset: (() => boolean)

    Resets strategy internals.

    Type declaration

      • (): boolean
      • Returns boolean

        true if the reset is successful, false otherwise.

        -
    setOptions: ((opts: undefined | WorkerChoiceStrategyOptions) => void)

    Sets the worker choice strategy options.

    +
    setOptions: ((opts: undefined | WorkerChoiceStrategyOptions) => void)

    Sets the worker choice strategy options.

    Type declaration

    strategyPolicy: StrategyPolicy

    Strategy policy.

    -
    taskStatisticsRequirements: TaskStatisticsRequirements

    Tasks statistics requirements.

    -
    update: ((workerNodeKey: number) => boolean)

    Updates the worker node key strategy internals. +

    Returns void

    strategyPolicy: StrategyPolicy

    Strategy policy.

    +
    taskStatisticsRequirements: TaskStatisticsRequirements

    Tasks statistics requirements.

    +
    update: ((workerNodeKey: number) => boolean)

    Updates the worker node key strategy internals. This is called after a task has been executed on a worker node.

    Type declaration

      • (workerNodeKey): boolean
      • Parameters

        • workerNodeKey: number

        Returns boolean

        true if the update is successful, false otherwise.

        -
    +
    diff --git a/docs/interfaces/IWorkerNode.html b/docs/interfaces/IWorkerNode.html index 1e99f194..9fa1a32a 100644 --- a/docs/interfaces/IWorkerNode.html +++ b/docs/interfaces/IWorkerNode.html @@ -1,7 +1,7 @@ -IWorkerNode | poolifier - v4.3.0

    InterfaceIWorkerNode<Worker, Data>Internal

    Worker node interface.

    +IWorkerNode | poolifier - v4.4.0

    Interface IWorkerNode<Worker, Data>Internal

    Worker node interface.

    interface IWorkerNode<Worker, Data> {
        clearTasksQueue: (() => void);
        deleteTaskFunctionWorkerUsage: ((name: string) => boolean);
        dequeueLastPrioritizedTask: (() => undefined | Task<Data>);
        dequeueTask: ((bucket?: number) => undefined | Task<Data>);
        enqueueTask: ((task: Task<Data>) => number);
        getTaskFunctionWorkerUsage: ((name: string) => undefined | WorkerUsage);
        info: WorkerInfo;
        messageChannel?: MessageChannel;
        registerOnceWorkerEventHandler: ((event: string, handler: EventHandler<Worker>) => void);
        registerWorkerEventHandler: ((event: string, handler: EventHandler<Worker>) => void);
        setTasksQueuePriority: ((enablePriority: boolean) => void);
        strategyData?: StrategyData;
        tasksQueueBackPressureSize: number;
        tasksQueueSize: (() => number);
        terminate: (() => Promise<void>);
        usage: WorkerUsage;
        worker: Worker;
        [captureRejectionSymbol]?<K>(error: Error, event: string | symbol, ...args: AnyRest): void;
        addListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        emit<K>(eventName: string | symbol, ...args: AnyRest): boolean;
        eventNames(): (string | symbol)[];
        getMaxListeners(): number;
        listenerCount<K>(eventName: string | symbol, listener?: Function): number;
        listeners<K>(eventName: string | symbol): Function[];
        off<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        on<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        once<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        prependListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        prependOnceListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        rawListeners<K>(eventName: string | symbol): Function[];
        removeAllListeners(eventName?: string | symbol): this;
        removeListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
        setMaxListeners(n: number): this;
    }

    Type Parameters

    • Worker extends IWorker

      Type of worker.

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -

    Hierarchy

    • EventEmitter
      • IWorkerNode

    Properties

    Hierarchy

    • EventEmitter
      • IWorkerNode

    Properties

    clearTasksQueue: (() => void)

    Clears tasks queue.

    -
    deleteTaskFunctionWorkerUsage: ((name: string) => boolean)

    Deletes task function worker usage statistics.

    +
    deleteTaskFunctionWorkerUsage: ((name: string) => boolean)

    Deletes task function worker usage statistics.

    Type declaration

      • (name): boolean
      • Parameters

        • name: string

          The task function name.

        Returns boolean

        true if the task function worker usage statistics were deleted, false otherwise.

        -
    dequeueLastPrioritizedTask: (() => undefined | Task<Data>)

    Dequeue last prioritized task.

    +
    dequeueLastPrioritizedTask: (() => undefined | Task<Data>)

    Dequeue last prioritized task.

    Type declaration

    dequeueTask: ((bucket?: number) => undefined | Task<Data>)

    Dequeue task.

    +
    dequeueTask: ((bucket?: number) => undefined | Task<Data>)

    Dequeue task.

    Type declaration

      • (bucket?): undefined | Task<Data>
      • Parameters

        • Optionalbucket: number

          The prioritized bucket to dequeue from.

        Returns undefined | Task<Data>

        The dequeued task.

    0
     
    -
    enqueueTask: ((task: Task<Data>) => number)

    Enqueue task.

    +
    enqueueTask: ((task: Task<Data>) => number)

    Enqueue task.

    Type declaration

      • (task): number
      • Parameters

        Returns number

        The tasks queue size.

        -
    getTaskFunctionWorkerUsage: ((name: string) => undefined | WorkerUsage)

    Gets task function worker usage statistics.

    +
    getTaskFunctionWorkerUsage: ((name: string) => undefined | WorkerUsage)

    Gets task function worker usage statistics.

    Type declaration

      • (name): undefined | WorkerUsage
      • Parameters

        • name: string

          The task function name.

        Returns undefined | WorkerUsage

        The task function worker usage statistics if the task function worker usage statistics are initialized, undefined otherwise.

        -

    Worker info.

    -
    messageChannel?: MessageChannel

    Message channel (worker thread only).

    -
    registerOnceWorkerEventHandler: ((event: string, handler: EventHandler<Worker>) => void)

    Registers once a worker event handler.

    +

    Worker info.

    +
    messageChannel?: MessageChannel

    Message channel (worker thread only).

    +
    registerOnceWorkerEventHandler: ((event: string, handler: EventHandler<Worker>) => void)

    Registers once a worker event handler.

    Type declaration

      • (event, handler): void
      • Parameters

        Returns void

    registerWorkerEventHandler: ((event: string, handler: EventHandler<Worker>) => void)

    Registers a worker event handler.

    +

    Returns void

    registerWorkerEventHandler: ((event: string, handler: EventHandler<Worker>) => void)

    Registers a worker event handler.

    Type declaration

      • (event, handler): void
      • Parameters

        Returns void

    setTasksQueuePriority: ((enablePriority: boolean) => void)

    Sets tasks queue priority.

    +

    Returns void

    setTasksQueuePriority: ((enablePriority: boolean) => void)

    Sets tasks queue priority.

    Type declaration

      • (enablePriority): void
      • Parameters

        • enablePriority: boolean

          Whether to enable tasks queue priority.

          -

        Returns void

    strategyData?: StrategyData

    Worker choice strategy data. +

    Returns void

    strategyData?: StrategyData

    Worker choice strategy data. This is used to store data that are specific to the worker choice strategy.

    -
    tasksQueueBackPressureSize: number

    Tasks queue back pressure size. +

    tasksQueueBackPressureSize: number

    Tasks queue back pressure size. This is the number of tasks that can be enqueued before the worker node has back pressure.

    -
    tasksQueueSize: (() => number)

    Tasks queue size.

    +
    tasksQueueSize: (() => number)

    Tasks queue size.

    Type declaration

      • (): number
      • Returns number

        The tasks queue size.

        -
    terminate: (() => Promise<void>)

    Terminates the worker node.

    -

    Worker usage statistics.

    -
    worker: Worker

    Worker.

    -

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Alias for emitter.on(eventName, listener).

      +
    terminate: (() => Promise<void>)

    Terminates the worker node.

    +

    Worker usage statistics.

    +
    worker: Worker

    Worker.

    +

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • Rest...args: AnyRest

      Returns void

    • Alias for emitter.on(eventName, listener).

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.26

      -
    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      import { EventEmitter } from 'node:events';
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • Rest...args: AnyRest

      Returns boolean

      v0.1.26

      -
    • Returns an array listing the events for which the emitter has registered +

    • Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or Symbols.

      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ]

      Returns (string | symbol)[]

      v6.0.0

      -
    • Returns the current max listener value for the EventEmitter which is either +

    • Returns the current max listener value for the EventEmitter which is either set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

      Returns number

      v1.0.0

      -
    • Returns the number of listeners listening for the event named eventName. +

    • Returns the number of listeners listening for the event named eventName. If listener is provided, it will return how many times the listener is found in the list of the listeners of the event.

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event being listened for

      • Optionallistener: Function

        The event handler function

      Returns number

      v3.2.0

      -
    • Returns a copy of the array of listeners for the event named eventName.

      +
    • Returns a copy of the array of listeners for the event named eventName.

      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ]

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

      Returns Function[]

      v0.1.26

      -
    • Alias for emitter.removeListener().

      +
    • Alias for emitter.removeListener().

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v10.0.0

      -
    • Adds the listener function to the end of the listeners array for the event +

    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -118,7 +118,7 @@ event listener to the beginning of the listeners array.

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event.

      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.101

      -
    • Adds a one-time listener function for the event named eventName. The +

    • Adds a one-time listener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -132,7 +132,7 @@ event listener to the beginning of the listeners array.

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event.

      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.3.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventName and listener will result in the listener being added, and called, multiple times.

      @@ -143,7 +143,7 @@ and listener will result in the listener being added,

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event.

      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -152,19 +152,19 @@ listener is removed, and then invoked.

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event.

      • listener: ((...args: any[]) => void)

        The callback function

          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v6.0.0

      -
    • Returns a copy of the array of listeners for the event named eventName, +

    • Returns a copy of the array of listeners for the event named eventName, including any wrappers (such as those created by .once()).

      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log');

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

      Returns Function[]

      v9.4.0

      -
    • Removes all listeners, or those of the specified eventName.

      +
    • Removes all listeners, or those of the specified eventName.

      It is bad practice to remove listeners added elsewhere in the code, particularly when the EventEmitter instance was created by some other component or module (e.g. sockets or file streams).

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • OptionaleventName: string | symbol

      Returns this

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event named eventName.

      +
    • Removes the specified listener from the listener array for the event named eventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);
      @@ -191,10 +191,10 @@ recently added instance. In the example the once('ping') listener i

      Returns a reference to the EventEmitter, so that calls can be chained.

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • listener: ((...args: any[]) => void)
          • (...args): void
          • Parameters

            • Rest...args: any[]

            Returns void

      Returns this

      v0.1.26

      -
    • By default EventEmitters will print a warning if more than 10 listeners are +

    • By default EventEmitters will print a warning if more than 10 listeners are added for a particular event. This is a useful default that helps finding memory leaks. The emitter.setMaxListeners() method allows the limit to be modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • n: number

      Returns this

      v0.3.5

      -
    +
    diff --git a/docs/interfaces/MeasurementOptions.html b/docs/interfaces/MeasurementOptions.html index 33c529c4..14b8be1f 100644 --- a/docs/interfaces/MeasurementOptions.html +++ b/docs/interfaces/MeasurementOptions.html @@ -1,4 +1,4 @@ -MeasurementOptions | poolifier - v4.3.0

    InterfaceMeasurementOptions

    Measurement options.

    -
    interface MeasurementOptions {
        median: boolean;
    }

    Properties

    median +MeasurementOptions | poolifier - v4.4.0

    Interface MeasurementOptions

    Measurement options.

    +
    interface MeasurementOptions {
        median: boolean;
    }

    Properties

    Properties

    median: boolean

    Set measurement median.

    -
    +
    diff --git a/docs/interfaces/MeasurementStatistics.html b/docs/interfaces/MeasurementStatistics.html index 14e6e29a..6b702a70 100644 --- a/docs/interfaces/MeasurementStatistics.html +++ b/docs/interfaces/MeasurementStatistics.html @@ -1,14 +1,14 @@ -MeasurementStatistics | poolifier - v4.3.0

    InterfaceMeasurementStatisticsInternal

    Measurement statistics.

    -
    interface MeasurementStatistics {
        aggregate?: number;
        average?: number;
        history: CircularBuffer;
        maximum?: number;
        median?: number;
        minimum?: number;
    }

    Properties

    aggregate? +MeasurementStatistics | poolifier - v4.4.0

    Interface MeasurementStatisticsInternal

    Measurement statistics.

    +
    interface MeasurementStatistics {
        aggregate?: number;
        average?: number;
        history: CircularBuffer;
        maximum?: number;
        median?: number;
        minimum?: number;
    }

    Properties

    aggregate?: number

    Measurement aggregate.

    -
    average?: number

    Measurement average.

    -

    Measurement history.

    -
    maximum?: number

    Measurement maximum.

    -
    median?: number

    Measurement median.

    -
    minimum?: number

    Measurement minimum.

    -
    +
    average?: number

    Measurement average.

    +

    Measurement history.

    +
    maximum?: number

    Measurement maximum.

    +
    median?: number

    Measurement median.

    +
    minimum?: number

    Measurement minimum.

    +
    diff --git a/docs/interfaces/MeasurementStatisticsRequirements.html b/docs/interfaces/MeasurementStatisticsRequirements.html index 1ad1e279..9b8c4f2e 100644 --- a/docs/interfaces/MeasurementStatisticsRequirements.html +++ b/docs/interfaces/MeasurementStatisticsRequirements.html @@ -1,8 +1,8 @@ -MeasurementStatisticsRequirements | poolifier - v4.3.0

    InterfaceMeasurementStatisticsRequirementsInternal

    Measurement statistics requirements.

    -
    interface MeasurementStatisticsRequirements {
        aggregate: boolean;
        average: boolean;
        median: boolean;
    }

    Properties

    aggregate +MeasurementStatisticsRequirements | poolifier - v4.4.0

    Interface MeasurementStatisticsRequirementsInternal

    Measurement statistics requirements.

    +
    interface MeasurementStatisticsRequirements {
        aggregate: boolean;
        average: boolean;
        median: boolean;
    }

    Properties

    aggregate: boolean

    Requires measurement aggregate.

    -
    average: boolean

    Requires measurement average.

    -
    median: boolean

    Requires measurement median.

    -
    +
    average: boolean

    Requires measurement average.

    +
    median: boolean

    Requires measurement median.

    +
    diff --git a/docs/interfaces/MessageValue.html b/docs/interfaces/MessageValue.html index e62031b6..0c556056 100644 --- a/docs/interfaces/MessageValue.html +++ b/docs/interfaces/MessageValue.html @@ -1,7 +1,7 @@ -MessageValue | poolifier - v4.3.0

    InterfaceMessageValue<Data, ErrorData>Internal

    Message object that is passed between main worker and worker.

    +MessageValue | poolifier - v4.4.0

    Interface MessageValue<Data, ErrorData>Internal

    Message object that is passed between main worker and worker.

    interface MessageValue<Data, ErrorData> {
        checkActive?: boolean;
        data?: Data;
        kill?:
            | true
            | "success"
            | "HARD"
            | "SOFT"
            | "failure";
        name?: string;
        port?: MessagePort;
        priority?: number;
        ready?: boolean;
        statistics?: WorkerStatistics;
        strategy?:
            | "FAIR_SHARE"
            | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
            | "LEAST_BUSY"
            | "LEAST_ELU"
            | "LEAST_USED"
            | "ROUND_ROBIN"
            | "WEIGHTED_ROUND_ROBIN";
        taskFunction?: string;
        taskFunctionOperation?: "add" | "default" | "remove";
        taskFunctionOperationStatus?: boolean;
        taskFunctionProperties?: TaskFunctionProperties;
        taskFunctionsProperties?: TaskFunctionProperties[];
        taskId?: `${string}-${string}-${string}-${string}-${string}`;
        taskPerformance?: TaskPerformance;
        timestamp?: number;
        transferList?: readonly TransferListItem[];
        workerError?: WorkerError<ErrorData>;
        workerId?: number;
    }

    Type Parameters

    • Data = unknown

      Type of data sent to the worker or execution response. This can only be structured-cloneable data.

    • ErrorData = unknown

      Type of data sent to the worker triggering an error. This can only be structured-cloneable data.

      -

    Hierarchy (view full)

    Properties

    Hierarchy (view full)

    Properties

    Properties

    checkActive?: boolean

    Whether the worker starts or stops its activity check.

    -
    data?: Data

    Task input data that will be passed to the worker.

    -
    kill?:
        | true
        | "success"
        | "HARD"
        | "SOFT"
        | "failure"

    Kill code.

    -
    name?: string

    Task name.

    -
    port?: MessagePort

    Message port.

    -
    priority?: number

    Task priority. Lower values have higher priority.

    +
    data?: Data

    Task input data that will be passed to the worker.

    +
    kill?:
        | true
        | "success"
        | "HARD"
        | "SOFT"
        | "failure"

    Kill code.

    +
    name?: string

    Task name.

    +
    port?: MessagePort

    Message port.

    +
    priority?: number

    Task priority. Lower values have higher priority.

    0
     
    -
    ready?: boolean

    Whether the worker is ready or not.

    -
    statistics?: WorkerStatistics

    Whether the worker computes the given statistics or not.

    -
    strategy?:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN"

    Task worker choice strategy.

    -
    taskFunction?: string

    Task function serialized to string.

    -
    taskFunctionOperation?: "add" | "default" | "remove"

    Task function operation:

    +
    ready?: boolean

    Whether the worker is ready or not.

    +
    statistics?: WorkerStatistics

    Whether the worker computes the given statistics or not.

    +
    strategy?:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN"

    Task worker choice strategy.

    +
    taskFunction?: string

    Task function serialized to string.

    +
    taskFunctionOperation?: "add" | "default" | "remove"

    Task function operation:

    • 'add' - Add a task function.
    • 'remove' - Remove a task function.
    • 'default' - Set a task function as default.
    -
    taskFunctionOperationStatus?: boolean

    Whether the task function operation is successful or not.

    -
    taskFunctionProperties?: TaskFunctionProperties

    Task function properties.

    -
    taskFunctionsProperties?: TaskFunctionProperties[]

    Task functions properties.

    -
    taskId?: `${string}-${string}-${string}-${string}-${string}`

    Task UUID.

    -
    taskPerformance?: TaskPerformance

    Task performance.

    -
    timestamp?: number

    Timestamp.

    -
    transferList?: readonly TransferListItem[]

    Array of transferable objects.

    -
    workerError?: WorkerError<ErrorData>

    Worker error.

    -
    workerId?: number

    Worker id.

    -
    +
    taskFunctionOperationStatus?: boolean

    Whether the task function operation is successful or not.

    +
    taskFunctionProperties?: TaskFunctionProperties

    Task function properties.

    +
    taskFunctionsProperties?: TaskFunctionProperties[]

    Task functions properties.

    +
    taskId?: `${string}-${string}-${string}-${string}-${string}`

    Task UUID.

    +
    taskPerformance?: TaskPerformance

    Task performance.

    +
    timestamp?: number

    Timestamp.

    +
    transferList?: readonly TransferListItem[]

    Array of transferable objects.

    +
    workerError?: WorkerError<ErrorData>

    Worker error.

    +
    workerId?: number

    Worker id.

    +
    diff --git a/docs/interfaces/PoolInfo.html b/docs/interfaces/PoolInfo.html index a6c95373..d5771cf9 100644 --- a/docs/interfaces/PoolInfo.html +++ b/docs/interfaces/PoolInfo.html @@ -1,5 +1,5 @@ -PoolInfo | poolifier - v4.3.0

    InterfacePoolInfo

    Pool information.

    -
    interface PoolInfo {
        backPressure?: boolean;
        backPressureWorkerNodes?: number;
        busyWorkerNodes: number;
        defaultStrategy:
            | "FAIR_SHARE"
            | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
            | "LEAST_BUSY"
            | "LEAST_ELU"
            | "LEAST_USED"
            | "ROUND_ROBIN"
            | "WEIGHTED_ROUND_ROBIN";
        dynamicWorkerNodes?: number;
        elu?: {
            active: {
                average?: number;
                maximum: number;
                median?: number;
                minimum: number;
            };
            idle: {
                average?: number;
                maximum: number;
                median?: number;
                minimum: number;
            };
            utilization: {
                average?: number;
                median?: number;
            };
        };
        executedTasks: number;
        executingTasks: number;
        failedTasks: number;
        idleWorkerNodes: number;
        maxQueuedTasks?: number;
        maxSize: number;
        minSize: number;
        queuedTasks?: number;
        ready: boolean;
        runTime?: {
            average?: number;
            maximum: number;
            median?: number;
            minimum: number;
        };
        started: boolean;
        stealingWorkerNodes?: number;
        stolenTasks?: number;
        strategyRetries: number;
        type: "fixed" | "dynamic";
        utilization?: number;
        version: string;
        waitTime?: {
            average?: number;
            maximum: number;
            median?: number;
            minimum: number;
        };
        worker: "cluster" | "thread";
        workerNodes: number;
    }

    Properties

    backPressure? +PoolInfo | poolifier - v4.4.0

    Interface PoolInfo

    Pool information.

    +
    interface PoolInfo {
        backPressure?: boolean;
        backPressureWorkerNodes?: number;
        busyWorkerNodes: number;
        defaultStrategy:
            | "FAIR_SHARE"
            | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
            | "LEAST_BUSY"
            | "LEAST_ELU"
            | "LEAST_USED"
            | "ROUND_ROBIN"
            | "WEIGHTED_ROUND_ROBIN";
        dynamicWorkerNodes?: number;
        elu?: {
            active: {
                average?: number;
                maximum: number;
                median?: number;
                minimum: number;
            };
            idle: {
                average?: number;
                maximum: number;
                median?: number;
                minimum: number;
            };
            utilization: {
                average?: number;
                median?: number;
            };
        };
        executedTasks: number;
        executingTasks: number;
        failedTasks: number;
        idleWorkerNodes: number;
        maxQueuedTasks?: number;
        maxSize: number;
        minSize: number;
        queuedTasks?: number;
        ready: boolean;
        runTime?: {
            average?: number;
            maximum: number;
            median?: number;
            minimum: number;
        };
        started: boolean;
        stealingWorkerNodes?: number;
        stolenTasks?: number;
        strategyRetries: number;
        type: "fixed" | "dynamic";
        utilization?: number;
        version: string;
        waitTime?: {
            average?: number;
            maximum: number;
            median?: number;
            minimum: number;
        };
        worker: "cluster" | "thread";
        workerNodes: number;
    }

    Properties

    backPressure?: boolean
    backPressureWorkerNodes?: number

    Pool tasks back pressure worker nodes.

    -
    busyWorkerNodes: number

    Pool busy worker nodes.

    -
    defaultStrategy:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN"
    dynamicWorkerNodes?: number

    Pool dynamic worker nodes.

    -
    elu?: {
        active: {
            average?: number;
            maximum: number;
            median?: number;
            minimum: number;
        };
        idle: {
            average?: number;
            maximum: number;
            median?: number;
            minimum: number;
        };
        utilization: {
            average?: number;
            median?: number;
        };
    }
    executedTasks: number
    executingTasks: number
    failedTasks: number
    idleWorkerNodes: number

    Pool idle worker nodes.

    -
    maxQueuedTasks?: number
    maxSize: number
    minSize: number
    queuedTasks?: number
    ready: boolean
    runTime?: {
        average?: number;
        maximum: number;
        median?: number;
        minimum: number;
    }
    started: boolean
    stealingWorkerNodes?: number

    Pool tasks stealing worker nodes.

    -
    stolenTasks?: number
    strategyRetries: number
    type: "fixed" | "dynamic"
    utilization?: number

    Pool utilization.

    -
    version: string
    waitTime?: {
        average?: number;
        maximum: number;
        median?: number;
        minimum: number;
    }
    worker: "cluster" | "thread"
    workerNodes: number

    Pool total worker nodes.

    -
    +

    Properties

    backPressure?: boolean
    backPressureWorkerNodes?: number

    Pool tasks back pressure worker nodes.

    +
    busyWorkerNodes: number

    Pool busy worker nodes.

    +
    defaultStrategy:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN"
    dynamicWorkerNodes?: number

    Pool dynamic worker nodes.

    +
    elu?: {
        active: {
            average?: number;
            maximum: number;
            median?: number;
            minimum: number;
        };
        idle: {
            average?: number;
            maximum: number;
            median?: number;
            minimum: number;
        };
        utilization: {
            average?: number;
            median?: number;
        };
    }
    executedTasks: number
    executingTasks: number
    failedTasks: number
    idleWorkerNodes: number

    Pool idle worker nodes.

    +
    maxQueuedTasks?: number
    maxSize: number
    minSize: number
    queuedTasks?: number
    ready: boolean
    runTime?: {
        average?: number;
        maximum: number;
        median?: number;
        minimum: number;
    }
    started: boolean
    stealingWorkerNodes?: number

    Pool tasks stealing worker nodes.

    +
    stolenTasks?: number
    strategyRetries: number
    type: "fixed" | "dynamic"
    utilization?: number

    Pool utilization.

    +
    version: string
    waitTime?: {
        average?: number;
        maximum: number;
        median?: number;
        minimum: number;
    }
    worker: "cluster" | "thread"
    workerNodes: number

    Pool total worker nodes.

    +
    diff --git a/docs/interfaces/PoolOptions.html b/docs/interfaces/PoolOptions.html index 112966b6..af3857c8 100644 --- a/docs/interfaces/PoolOptions.html +++ b/docs/interfaces/PoolOptions.html @@ -1,6 +1,6 @@ -PoolOptions | poolifier - v4.3.0

    InterfacePoolOptions<Worker>

    Options for a poolifier pool.

    +PoolOptions | poolifier - v4.4.0

    Interface PoolOptions<Worker>

    Options for a poolifier pool.

    interface PoolOptions<Worker> {
        enableEvents?: boolean;
        enableTasksQueue?: boolean;
        env?: Record<string, unknown>;
        errorHandler?: ErrorHandler<Worker>;
        exitHandler?: ExitHandler<Worker>;
        messageHandler?: MessageHandler<Worker>;
        onlineHandler?: OnlineHandler<Worker>;
        restartWorkerOnError?: boolean;
        settings?: ClusterSettings;
        startWorkers?: boolean;
        tasksQueueOptions?: TasksQueueOptions;
        workerChoiceStrategy?:
            | "FAIR_SHARE"
            | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
            | "LEAST_BUSY"
            | "LEAST_ELU"
            | "LEAST_USED"
            | "ROUND_ROBIN"
            | "WEIGHTED_ROUND_ROBIN";
        workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions;
        workerOptions?: WorkerOptions;
    }

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      -

    Properties

    Properties

    true
     
    -
    enableTasksQueue?: boolean

    Pool worker node tasks queue.

    +
    enableTasksQueue?: boolean

    Pool worker node tasks queue.

    false
     
    -
    env?: Record<string, unknown>

    Key/value pairs to add to worker process environment.

    +
    env?: Record<string, unknown>

    Key/value pairs to add to worker process environment.

    errorHandler?: ErrorHandler<Worker>

    A function that will listen for error event on each worker.

    +
    errorHandler?: ErrorHandler<Worker>

    A function that will listen for error event on each worker.

    () => {}

    -
    exitHandler?: ExitHandler<Worker>

    A function that will listen for exit event on each worker.

    +
    exitHandler?: ExitHandler<Worker>

    A function that will listen for exit event on each worker.

    () => {}

    -
    messageHandler?: MessageHandler<Worker>

    A function that will listen for message event on each worker.

    +
    messageHandler?: MessageHandler<Worker>

    A function that will listen for message event on each worker.

    () => {}

    -
    onlineHandler?: OnlineHandler<Worker>

    A function that will listen for online event on each worker.

    +
    onlineHandler?: OnlineHandler<Worker>

    A function that will listen for online event on each worker.

    () => {}

    -
    restartWorkerOnError?: boolean

    Restart worker on error.

    -
    settings?: ClusterSettings

    Cluster settings.

    +
    restartWorkerOnError?: boolean

    Restart worker on error.

    +
    settings?: ClusterSettings

    Cluster settings.

    startWorkers?: boolean

    Whether to start the minimum number of workers at pool initialization.

    +
    startWorkers?: boolean

    Whether to start the minimum number of workers at pool initialization.

    true
     
    -
    tasksQueueOptions?: TasksQueueOptions

    Pool worker node tasks queue options.

    -
    workerChoiceStrategy?:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN"

    The default worker choice strategy to use in this pool.

    +
    tasksQueueOptions?: TasksQueueOptions

    Pool worker node tasks queue options.

    +
    workerChoiceStrategy?:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN"

    The default worker choice strategy to use in this pool.

    WorkerChoiceStrategies.ROUND_ROBIN
     
    -
    workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions

    The worker choice strategy options.

    -
    workerOptions?: WorkerOptions

    Worker options.

    +
    workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions

    The worker choice strategy options.

    +
    workerOptions?: WorkerOptions

    Worker options.

    +
    diff --git a/docs/interfaces/PromiseResponseWrapper.html b/docs/interfaces/PromiseResponseWrapper.html index cdff03b7..7ce91cf5 100644 --- a/docs/interfaces/PromiseResponseWrapper.html +++ b/docs/interfaces/PromiseResponseWrapper.html @@ -1,11 +1,11 @@ -PromiseResponseWrapper | poolifier - v4.3.0

    InterfacePromiseResponseWrapper<Response>Internal

    An object holding the task execution response promise resolve/reject callbacks.

    +PromiseResponseWrapper | poolifier - v4.4.0

    Interface PromiseResponseWrapper<Response>Internal

    An object holding the task execution response promise resolve/reject callbacks.

    interface PromiseResponseWrapper<Response> {
        asyncResource?: AsyncResource;
        reject: ((reason?: unknown) => void);
        resolve: ((value: Response | PromiseLike<Response>) => void);
        workerNodeKey: number;
    }

    Type Parameters

    • Response = unknown

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

      -

    Properties

    Properties

    asyncResource?: AsyncResource

    The asynchronous resource used to track the task execution.

    -
    reject: ((reason?: unknown) => void)

    Reject callback to reject the promise.

    -
    resolve: ((value: Response | PromiseLike<Response>) => void)

    Resolve callback to fulfill the promise.

    -
    workerNodeKey: number

    The worker node key executing the task.

    -
    +
    reject: ((reason?: unknown) => void)

    Reject callback to reject the promise.

    +
    resolve: ((value: Response | PromiseLike<Response>) => void)

    Resolve callback to fulfill the promise.

    +
    workerNodeKey: number

    The worker node key executing the task.

    +
    diff --git a/docs/interfaces/StrategyData.html b/docs/interfaces/StrategyData.html index e0e31495..c017243d 100644 --- a/docs/interfaces/StrategyData.html +++ b/docs/interfaces/StrategyData.html @@ -1,3 +1,3 @@ -StrategyData | poolifier - v4.3.0

    InterfaceStrategyDataInternal

    Worker choice strategy data.

    -
    interface StrategyData {
        virtualTaskEndTimestamp?: number;
    }

    Properties

    virtualTaskEndTimestamp?: number
    +StrategyData | poolifier - v4.4.0

    Interface StrategyDataInternal

    Worker choice strategy data.

    +
    interface StrategyData {
        virtualTaskEndTimestamp?: number;
    }

    Properties

    virtualTaskEndTimestamp?: number
    diff --git a/docs/interfaces/StrategyPolicy.html b/docs/interfaces/StrategyPolicy.html index aa3f5385..4ff9191d 100644 --- a/docs/interfaces/StrategyPolicy.html +++ b/docs/interfaces/StrategyPolicy.html @@ -1,6 +1,6 @@ -StrategyPolicy | poolifier - v4.3.0

    InterfaceStrategyPolicyInternal

    Strategy policy.

    -
    interface StrategyPolicy {
        dynamicWorkerReady: boolean;
        dynamicWorkerUsage: boolean;
    }

    Properties

    dynamicWorkerReady +StrategyPolicy | poolifier - v4.4.0

    Interface StrategyPolicyInternal

    Strategy policy.

    +
    interface StrategyPolicy {
        dynamicWorkerReady: boolean;
        dynamicWorkerUsage: boolean;
    }

    Properties

    dynamicWorkerReady: boolean

    Expects the newly created dynamic worker to be flagged as ready.

    -
    dynamicWorkerUsage: boolean

    Expects tasks execution on the newly created dynamic worker.

    -
    +
    dynamicWorkerUsage: boolean

    Expects tasks execution on the newly created dynamic worker.

    +
    diff --git a/docs/interfaces/Task.html b/docs/interfaces/Task.html index 0757bcac..436d546b 100644 --- a/docs/interfaces/Task.html +++ b/docs/interfaces/Task.html @@ -1,6 +1,6 @@ -Task | poolifier - v4.3.0

    InterfaceTask<Data>Internal

    Message object that is passed as a task between main worker and worker.

    +Task | poolifier - v4.4.0

    Interface Task<Data>Internal

    Message object that is passed as a task between main worker and worker.

    interface Task<Data> {
        data?: Data;
        name?: string;
        priority?: number;
        strategy?:
            | "FAIR_SHARE"
            | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
            | "LEAST_BUSY"
            | "LEAST_ELU"
            | "LEAST_USED"
            | "ROUND_ROBIN"
            | "WEIGHTED_ROUND_ROBIN";
        taskId?: `${string}-${string}-${string}-${string}-${string}`;
        timestamp?: number;
        transferList?: readonly TransferListItem[];
    }

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -

    Hierarchy (view full)

    Properties

    Hierarchy (view full)

    Properties

    Properties

    data?: Data

    Task input data that will be passed to the worker.

    -
    name?: string

    Task name.

    -
    priority?: number

    Task priority. Lower values have higher priority.

    +
    name?: string

    Task name.

    +
    priority?: number

    Task priority. Lower values have higher priority.

    0
     
    -
    strategy?:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN"

    Task worker choice strategy.

    -
    taskId?: `${string}-${string}-${string}-${string}-${string}`

    Task UUID.

    -
    timestamp?: number

    Timestamp.

    -
    transferList?: readonly TransferListItem[]

    Array of transferable objects.

    -
    +
    strategy?:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN"

    Task worker choice strategy.

    +
    taskId?: `${string}-${string}-${string}-${string}-${string}`

    Task UUID.

    +
    timestamp?: number

    Timestamp.

    +
    transferList?: readonly TransferListItem[]

    Array of transferable objects.

    +
    diff --git a/docs/interfaces/TaskFunctionObject.html b/docs/interfaces/TaskFunctionObject.html index e165b8d0..a6c067ea 100644 --- a/docs/interfaces/TaskFunctionObject.html +++ b/docs/interfaces/TaskFunctionObject.html @@ -1,10 +1,10 @@ -TaskFunctionObject | poolifier - v4.3.0

    InterfaceTaskFunctionObject<Data, Response>

    Task function object.

    +TaskFunctionObject | poolifier - v4.4.0

    Interface TaskFunctionObject<Data, Response>

    Task function object.

    interface TaskFunctionObject<Data, Response> {
        priority?: number;
        strategy?:
            | "FAIR_SHARE"
            | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
            | "LEAST_BUSY"
            | "LEAST_ELU"
            | "LEAST_USED"
            | "ROUND_ROBIN"
            | "WEIGHTED_ROUND_ROBIN";
        taskFunction: TaskFunction<Data, Response>;
    }

    Type Parameters

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

      -

    Properties

    Properties

    priority?: number

    Task function priority. Lower values have higher priority.

    -
    strategy?:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN"

    Task function worker choice strategy.

    -
    taskFunction: TaskFunction<Data, Response>

    Task function.

    -
    +
    strategy?:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN"

    Task function worker choice strategy.

    +
    taskFunction: TaskFunction<Data, Response>

    Task function.

    +
    diff --git a/docs/interfaces/TaskFunctionOperationResult.html b/docs/interfaces/TaskFunctionOperationResult.html index 6a242b08..a6abe177 100644 --- a/docs/interfaces/TaskFunctionOperationResult.html +++ b/docs/interfaces/TaskFunctionOperationResult.html @@ -1,4 +1,4 @@ -TaskFunctionOperationResult | poolifier - v4.3.0

    InterfaceTaskFunctionOperationResult

    Task function operation result.

    -
    interface TaskFunctionOperationResult {
        error?: Error;
        status: boolean;
    }

    Properties

    error? +TaskFunctionOperationResult | poolifier - v4.4.0

    Interface TaskFunctionOperationResult

    Task function operation result.

    +
    interface TaskFunctionOperationResult {
        error?: Error;
        status: boolean;
    }

    Properties

    Properties

    error?: Error
    status: boolean
    +

    Properties

    error?: Error
    status: boolean
    diff --git a/docs/interfaces/TaskFunctionProperties.html b/docs/interfaces/TaskFunctionProperties.html index aae60b64..21b90d23 100644 --- a/docs/interfaces/TaskFunctionProperties.html +++ b/docs/interfaces/TaskFunctionProperties.html @@ -1,8 +1,8 @@ -TaskFunctionProperties | poolifier - v4.3.0

    InterfaceTaskFunctionProperties

    Task function properties.

    -
    interface TaskFunctionProperties {
        name: string;
        priority?: number;
        strategy?:
            | "FAIR_SHARE"
            | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
            | "LEAST_BUSY"
            | "LEAST_ELU"
            | "LEAST_USED"
            | "ROUND_ROBIN"
            | "WEIGHTED_ROUND_ROBIN";
    }

    Properties

    name +TaskFunctionProperties | poolifier - v4.4.0

    Interface TaskFunctionProperties

    Task function properties.

    +
    interface TaskFunctionProperties {
        name: string;
        priority?: number;
        strategy?:
            | "FAIR_SHARE"
            | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
            | "LEAST_BUSY"
            | "LEAST_ELU"
            | "LEAST_USED"
            | "ROUND_ROBIN"
            | "WEIGHTED_ROUND_ROBIN";
    }

    Properties

    name: string

    Task function name.

    -
    priority?: number

    Task function priority. Lower values have higher priority.

    -
    strategy?:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN"

    Task function worker choice strategy.

    -
    +
    priority?: number

    Task function priority. Lower values have higher priority.

    +
    strategy?:
        | "FAIR_SHARE"
        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
        | "LEAST_BUSY"
        | "LEAST_ELU"
        | "LEAST_USED"
        | "ROUND_ROBIN"
        | "WEIGHTED_ROUND_ROBIN"

    Task function worker choice strategy.

    +
    diff --git a/docs/interfaces/TaskPerformance.html b/docs/interfaces/TaskPerformance.html index 4dc83ba5..6b5d9395 100644 --- a/docs/interfaces/TaskPerformance.html +++ b/docs/interfaces/TaskPerformance.html @@ -1,10 +1,10 @@ -TaskPerformance | poolifier - v4.3.0

    InterfaceTaskPerformanceInternal

    Task performance.

    -
    interface TaskPerformance {
        elu?: EventLoopUtilization;
        name: string;
        runTime?: number;
        timestamp: number;
    }

    Properties

    elu? +TaskPerformance | poolifier - v4.4.0

    Interface TaskPerformanceInternal

    Task performance.

    +
    interface TaskPerformance {
        elu?: EventLoopUtilization;
        name: string;
        runTime?: number;
        timestamp: number;
    }

    Properties

    elu?: EventLoopUtilization

    Task event loop utilization.

    -
    name: string

    Task name.

    -
    runTime?: number

    Task runtime.

    -
    timestamp: number

    Task performance timestamp.

    -
    +
    name: string

    Task name.

    +
    runTime?: number

    Task runtime.

    +
    timestamp: number

    Task performance timestamp.

    +
    diff --git a/docs/interfaces/TaskStatistics.html b/docs/interfaces/TaskStatistics.html index 85542ebf..e61cc659 100644 --- a/docs/interfaces/TaskStatistics.html +++ b/docs/interfaces/TaskStatistics.html @@ -1,5 +1,5 @@ -TaskStatistics | poolifier - v4.3.0

    InterfaceTaskStatisticsInternal

    Task statistics.

    -
    interface TaskStatistics {
        executed: number;
        executing: number;
        failed: number;
        maxQueued?: number;
        queued: number;
        sequentiallyStolen: number;
        stolen: number;
    }

    Properties

    executed +TaskStatistics | poolifier - v4.4.0

    Interface TaskStatisticsInternal

    Task statistics.

    +
    interface TaskStatistics {
        executed: number;
        executing: number;
        failed: number;
        maxQueued?: number;
        queued: number;
        sequentiallyStolen: number;
        stolen: number;
    }

    Properties

    executed: number

    Number of executed tasks.

    -
    executing: number

    Number of executing tasks.

    -
    failed: number

    Number of failed tasks.

    -
    maxQueued?: number

    Maximum number of queued tasks.

    -
    queued: number

    Number of queued tasks.

    -
    sequentiallyStolen: number

    Number of sequentially stolen tasks.

    -
    stolen: number

    Number of stolen tasks.

    -
    +
    executing: number

    Number of executing tasks.

    +
    failed: number

    Number of failed tasks.

    +
    maxQueued?: number

    Maximum number of queued tasks.

    +
    queued: number

    Number of queued tasks.

    +
    sequentiallyStolen: number

    Number of sequentially stolen tasks.

    +
    stolen: number

    Number of stolen tasks.

    +
    diff --git a/docs/interfaces/TaskStatisticsRequirements.html b/docs/interfaces/TaskStatisticsRequirements.html index b6172692..9aa887d9 100644 --- a/docs/interfaces/TaskStatisticsRequirements.html +++ b/docs/interfaces/TaskStatisticsRequirements.html @@ -1,8 +1,8 @@ -TaskStatisticsRequirements | poolifier - v4.3.0

    InterfaceTaskStatisticsRequirementsInternal

    Pool worker node worker usage statistics requirements.

    -
    interface TaskStatisticsRequirements {
        elu: MeasurementStatisticsRequirements;
        runTime: MeasurementStatisticsRequirements;
        waitTime: MeasurementStatisticsRequirements;
    }

    Properties

    elu +TaskStatisticsRequirements | poolifier - v4.4.0

    Interface TaskStatisticsRequirementsInternal

    Pool worker node worker usage statistics requirements.

    +
    interface TaskStatisticsRequirements {
        elu: MeasurementStatisticsRequirements;
        runTime: MeasurementStatisticsRequirements;
        waitTime: MeasurementStatisticsRequirements;
    }

    Properties

    Properties

    Tasks event loop utilization requirements.

    -

    Tasks runtime requirements.

    -

    Tasks wait time requirements.

    -
    +

    Tasks runtime requirements.

    +

    Tasks wait time requirements.

    +
    diff --git a/docs/interfaces/TasksQueueOptions.html b/docs/interfaces/TasksQueueOptions.html index 7f446b83..314aded5 100644 --- a/docs/interfaces/TasksQueueOptions.html +++ b/docs/interfaces/TasksQueueOptions.html @@ -1,5 +1,5 @@ -TasksQueueOptions | poolifier - v4.3.0

    InterfaceTasksQueueOptions

    Worker node tasks queue options.

    -
    interface TasksQueueOptions {
        concurrency?: number;
        size?: number;
        tasksFinishedTimeout?: number;
        tasksStealingOnBackPressure?: boolean;
        tasksStealingRatio?: number;
        taskStealing?: boolean;
    }

    Properties

    concurrency? +TasksQueueOptions | poolifier - v4.4.0

    Interface TasksQueueOptions

    Worker node tasks queue options.

    +
    interface TasksQueueOptions {
        concurrency?: number;
        size?: number;
        tasksFinishedTimeout?: number;
        tasksStealingOnBackPressure?: boolean;
        tasksStealingRatio?: number;
        taskStealing?: boolean;
    }

    Properties

    1
     
    -
    size?: number

    Maximum tasks queue size per worker node flagging it as back pressured.

    +
    size?: number

    Maximum tasks queue size per worker node flagging it as back pressured.

    (pool maximum size)^2
     
    -
    tasksFinishedTimeout?: number

    Queued tasks finished timeout in milliseconds at worker node termination.

    +
    tasksFinishedTimeout?: number

    Queued tasks finished timeout in milliseconds at worker node termination.

    2000
     
    -
    tasksStealingOnBackPressure?: boolean

    Whether to enable tasks stealing under back pressure.

    +
    tasksStealingOnBackPressure?: boolean

    Whether to enable tasks stealing under back pressure.

    true
     
    -
    tasksStealingRatio?: number

    Ratio of worker nodes that can steal tasks from another worker node.

    +
    tasksStealingRatio?: number

    Ratio of worker nodes that can steal tasks from another worker node.

    0.6
     
    -
    taskStealing?: boolean

    Whether to enable task stealing on idle.

    +
    taskStealing?: boolean

    Whether to enable task stealing on idle.

    true
     
    -
    +
    diff --git a/docs/interfaces/WorkerChoiceStrategyOptions.html b/docs/interfaces/WorkerChoiceStrategyOptions.html index 5c15000a..2edd466b 100644 --- a/docs/interfaces/WorkerChoiceStrategyOptions.html +++ b/docs/interfaces/WorkerChoiceStrategyOptions.html @@ -1,5 +1,5 @@ -WorkerChoiceStrategyOptions | poolifier - v4.3.0

    InterfaceWorkerChoiceStrategyOptions

    Worker choice strategy options.

    -
    interface WorkerChoiceStrategyOptions {
        elu?: MeasurementOptions;
        measurement?: "elu" | "runTime" | "waitTime";
        runTime?: MeasurementOptions;
        waitTime?: MeasurementOptions;
        weights?: Record<number, number>;
    }

    Properties

    elu? +WorkerChoiceStrategyOptions | poolifier - v4.4.0

    Interface WorkerChoiceStrategyOptions

    Worker choice strategy options.

    +
    interface WorkerChoiceStrategyOptions {
        elu?: MeasurementOptions;
        measurement?: "elu" | "runTime" | "waitTime";
        runTime?: MeasurementOptions;
        waitTime?: MeasurementOptions;
        weights?: Record<number, number>;
    }

    Properties

    elu? measurement? runTime? waitTime? @@ -8,18 +8,18 @@
    { median: false }
     
    -
    measurement?: "elu" | "runTime" | "waitTime"

    Measurement to use in worker choice strategy supporting it.

    -

    Runtime options.

    +
    measurement?: "elu" | "runTime" | "waitTime"

    Measurement to use in worker choice strategy supporting it.

    +

    Runtime options.

    { median: false }
     
    -

    Wait time options.

    +

    Wait time options.

    { median: false }
     
    -
    weights?: Record<number, number>

    Worker weights to use for weighted round robin worker selection strategies. +

    weights?: Record<number, number>

    Worker weights to use for weighted round robin worker selection strategies. A weight is tasks maximum execution time in milliseconds for a worker node.

    Weights computed automatically given the CPU performance.
     
    -
    +
    diff --git a/docs/interfaces/WorkerError.html b/docs/interfaces/WorkerError.html index 96908a02..d8ff7de7 100644 --- a/docs/interfaces/WorkerError.html +++ b/docs/interfaces/WorkerError.html @@ -1,9 +1,11 @@ -WorkerError | poolifier - v4.3.0

    InterfaceWorkerError<Data>

    Worker error.

    -
    interface WorkerError<Data> {
        data?: Data;
        message: string;
        name: string;
    }

    Type Parameters

    • Data = unknown

      Type of data sent to the worker triggering an error. This can only be structured-cloneable data.

      -

    Properties

    data? +WorkerError | poolifier - v4.4.0

    Interface WorkerError<Data>

    Worker error.

    +
    interface WorkerError<Data> {
        data?: Data;
        message: string;
        name?: string;
        stack?: string;
    }

    Type Parameters

    • Data = unknown

      Type of data sent to the worker triggering an error. This can only be structured-cloneable data.

      +

    Properties

    Properties

    data?: Data

    Data triggering the error.

    -
    message: string

    Error message.

    -
    name: string

    Task function name triggering the error.

    -
    +
    message: string

    Error message.

    +
    name?: string

    Task function name triggering the error.

    +
    stack?: string

    Error stack trace.

    +
    diff --git a/docs/interfaces/WorkerInfo.html b/docs/interfaces/WorkerInfo.html index be4e743f..04683aa6 100644 --- a/docs/interfaces/WorkerInfo.html +++ b/docs/interfaces/WorkerInfo.html @@ -1,5 +1,5 @@ -WorkerInfo | poolifier - v4.3.0

    InterfaceWorkerInfoInternal

    Worker information.

    -
    interface WorkerInfo {
        backPressure: boolean;
        backPressureStealing: boolean;
        continuousStealing: boolean;
        dynamic: boolean;
        id: undefined | number;
        ready: boolean;
        stealing: boolean;
        stolen: boolean;
        taskFunctionsProperties?: TaskFunctionProperties[];
        type: "cluster" | "thread";
    }

    Properties

    backPressure +WorkerInfo | poolifier - v4.4.0

    Interface WorkerInfoInternal

    Worker information.

    +
    interface WorkerInfo {
        backPressure: boolean;
        backPressureStealing: boolean;
        continuousStealing: boolean;
        dynamic: boolean;
        id: undefined | number;
        ready: boolean;
        stealing: boolean;
        stolen: boolean;
        taskFunctionsProperties?: TaskFunctionProperties[];
        type: "cluster" | "thread";
    }

    Properties

    backPressure: boolean

    Back pressure flag. This flag is set to true when worker node tasks queue is back pressured.

    -
    backPressureStealing: boolean

    Back pressure stealing flag. +

    backPressureStealing: boolean

    Back pressure stealing flag. This flag is set to true when worker node is stealing one task from another back pressured worker node.

    -
    continuousStealing: boolean

    Continuous stealing flag. +

    continuousStealing: boolean

    Continuous stealing flag. This flag is set to true when worker node is continuously stealing tasks from other worker nodes.

    -
    dynamic: boolean

    Dynamic flag.

    -
    id: undefined | number

    Worker id.

    -
    ready: boolean

    Ready flag.

    -
    stealing: boolean

    Stealing flag. +

    dynamic: boolean

    Dynamic flag.

    +
    id: undefined | number

    Worker id.

    +
    ready: boolean

    Ready flag.

    +
    stealing: boolean

    Stealing flag. This flag is set to true when worker node is stealing one task from another worker node.

    -
    stolen: boolean

    Stolen flag. +

    stolen: boolean

    Stolen flag. This flag is set to true when worker node has one task stolen from another worker node.

    -
    taskFunctionsProperties?: TaskFunctionProperties[]

    Task functions properties.

    -
    type: "cluster" | "thread"

    Worker type.

    -
    +
    taskFunctionsProperties?: TaskFunctionProperties[]

    Task functions properties.

    +
    type: "cluster" | "thread"

    Worker type.

    +
    diff --git a/docs/interfaces/WorkerNodeEventDetail.html b/docs/interfaces/WorkerNodeEventDetail.html index 351089bb..16dd29ea 100644 --- a/docs/interfaces/WorkerNodeEventDetail.html +++ b/docs/interfaces/WorkerNodeEventDetail.html @@ -1,4 +1,4 @@ -WorkerNodeEventDetail | poolifier - v4.3.0

    InterfaceWorkerNodeEventDetailInternal

    Worker node event detail.

    -
    interface WorkerNodeEventDetail {
        workerId?: number;
        workerNodeKey?: number;
    }

    Properties

    workerId? +WorkerNodeEventDetail | poolifier - v4.4.0

    Interface WorkerNodeEventDetailInternal

    Worker node event detail.

    +
    interface WorkerNodeEventDetail {
        workerId?: number;
        workerNodeKey?: number;
    }

    Properties

    workerId?: number
    workerNodeKey?: number
    +

    Properties

    workerId?: number
    workerNodeKey?: number
    diff --git a/docs/interfaces/WorkerNodeOptions.html b/docs/interfaces/WorkerNodeOptions.html index 8b466963..c503c10c 100644 --- a/docs/interfaces/WorkerNodeOptions.html +++ b/docs/interfaces/WorkerNodeOptions.html @@ -1,7 +1,7 @@ -WorkerNodeOptions | poolifier - v4.3.0

    InterfaceWorkerNodeOptionsInternal

    Worker node options.

    -
    interface WorkerNodeOptions {
        env?: Record<string, unknown>;
        tasksQueueBackPressureSize: undefined | number;
        tasksQueueBucketSize: undefined | number;
        tasksQueuePriority: undefined | boolean;
        workerOptions?: WorkerOptions;
    }

    Properties

    env? +WorkerNodeOptions | poolifier - v4.4.0

    Interface WorkerNodeOptionsInternal

    Worker node options.

    +
    interface WorkerNodeOptions {
        env?: Record<string, unknown>;
        tasksQueueBackPressureSize: undefined | number;
        tasksQueueBucketSize: undefined | number;
        tasksQueuePriority: undefined | boolean;
        workerOptions?: WorkerOptions;
    }

    Properties

    env?: Record<string, unknown>
    tasksQueueBackPressureSize: undefined | number
    tasksQueueBucketSize: undefined | number
    tasksQueuePriority: undefined | boolean
    workerOptions?: WorkerOptions
    +

    Properties

    env?: Record<string, unknown>
    tasksQueueBackPressureSize: undefined | number
    tasksQueueBucketSize: undefined | number
    tasksQueuePriority: undefined | boolean
    workerOptions?: WorkerOptions
    diff --git a/docs/interfaces/WorkerOptions.html b/docs/interfaces/WorkerOptions.html index 03daecd7..354e306b 100644 --- a/docs/interfaces/WorkerOptions.html +++ b/docs/interfaces/WorkerOptions.html @@ -1,5 +1,5 @@ -WorkerOptions | poolifier - v4.3.0

    InterfaceWorkerOptions

    Options for workers.

    -
    interface WorkerOptions {
        killBehavior?: "HARD" | "SOFT";
        killHandler?: KillHandler;
        maxInactiveTime?: number;
    }

    Properties

    killBehavior? +WorkerOptions | poolifier - v4.4.0

    Interface WorkerOptions

    Options for workers.

    +
    interface WorkerOptions {
        killBehavior?: "HARD" | "SOFT";
        killHandler?: KillHandler;
        maxInactiveTime?: number;
    }

    Properties

    killBehavior?: "HARD" | "SOFT"

    killBehavior dictates if your worker will be deleted in case a task is active on it.

    @@ -11,9 +11,9 @@
    KillBehaviors.SOFT
     
    -
    killHandler?: KillHandler

    The function to call when a worker is killed.

    +
    killHandler?: KillHandler

    The function to call when a worker is killed.

    () => {}

    -
    maxInactiveTime?: number

    Maximum waiting time in milliseconds for tasks on newly created workers. It must be greater or equal than 5.

    +
    maxInactiveTime?: number

    Maximum waiting time in milliseconds for tasks on newly created workers. It must be greater or equal than 5.

    After this time, newly created workers will be terminated. The last active time of your worker will be updated when it terminates a task.

      @@ -24,4 +24,4 @@ when this timeout expires your tasks is interrupted before completion and remove
    60000
     
    -
    +
    diff --git a/docs/interfaces/WorkerStatistics.html b/docs/interfaces/WorkerStatistics.html index 63549c4d..beaeccff 100644 --- a/docs/interfaces/WorkerStatistics.html +++ b/docs/interfaces/WorkerStatistics.html @@ -1,6 +1,6 @@ -WorkerStatistics | poolifier - v4.3.0

    InterfaceWorkerStatisticsInternal

    Worker task performance statistics computation settings.

    -
    interface WorkerStatistics {
        elu: boolean;
        runTime: boolean;
    }

    Properties

    elu +WorkerStatistics | poolifier - v4.4.0

    Interface WorkerStatisticsInternal

    Worker task performance statistics computation settings.

    +
    interface WorkerStatistics {
        elu: boolean;
        runTime: boolean;
    }

    Properties

    Properties

    elu: boolean

    Whether the worker computes the task event loop utilization (ELU) or not.

    -
    runTime: boolean

    Whether the worker computes the task runtime or not.

    -
    +
    runTime: boolean

    Whether the worker computes the task runtime or not.

    +
    diff --git a/docs/interfaces/WorkerUsage.html b/docs/interfaces/WorkerUsage.html index 8f4fb260..038cbe1e 100644 --- a/docs/interfaces/WorkerUsage.html +++ b/docs/interfaces/WorkerUsage.html @@ -1,10 +1,10 @@ -WorkerUsage | poolifier - v4.3.0

    InterfaceWorkerUsageInternal

    Worker usage statistics.

    -
    interface WorkerUsage {
        elu: EventLoopUtilizationMeasurementStatistics;
        runTime: MeasurementStatistics;
        tasks: TaskStatistics;
        waitTime: MeasurementStatistics;
    }

    Properties

    elu +WorkerUsage | poolifier - v4.4.0

    Interface WorkerUsageInternal

    Worker usage statistics.

    +
    interface WorkerUsage {
        elu: EventLoopUtilizationMeasurementStatistics;
        runTime: MeasurementStatistics;
        tasks: TaskStatistics;
        waitTime: MeasurementStatistics;
    }

    Properties

    Tasks event loop utilization statistics.

    -

    Tasks runtime statistics.

    -

    Tasks statistics.

    -

    Tasks wait time statistics.

    -
    +

    Tasks runtime statistics.

    +

    Tasks statistics.

    +

    Tasks wait time statistics.

    +
    diff --git a/docs/types/ClusterPoolOptions.html b/docs/types/ClusterPoolOptions.html index c1cf6b11..f4930a10 100644 --- a/docs/types/ClusterPoolOptions.html +++ b/docs/types/ClusterPoolOptions.html @@ -1,2 +1,2 @@ -ClusterPoolOptions | poolifier - v4.3.0

    Type AliasClusterPoolOptions

    ClusterPoolOptions: PoolOptions<Worker>

    Options for a poolifier cluster pool.

    -
    +ClusterPoolOptions | poolifier - v4.4.0

    Type Alias ClusterPoolOptions

    ClusterPoolOptions: PoolOptions<Worker>

    Options for a poolifier cluster pool.

    +
    diff --git a/docs/types/ErrorHandler.html b/docs/types/ErrorHandler.html index a4854614..fa6366f5 100644 --- a/docs/types/ErrorHandler.html +++ b/docs/types/ErrorHandler.html @@ -1,3 +1,3 @@ -ErrorHandler | poolifier - v4.3.0

    Type AliasErrorHandler<Worker>

    ErrorHandler<Worker>: ((this: Worker, error: Error) => void)

    Callback invoked if the worker raised an error.

    +ErrorHandler | poolifier - v4.4.0

    Type Alias ErrorHandler<Worker>

    ErrorHandler<Worker>: ((this: Worker, error: Error) => void)

    Callback invoked if the worker raised an error.

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      -
    +
    diff --git a/docs/types/EventHandler.html b/docs/types/EventHandler.html index 7312aef1..5680bbb1 100644 --- a/docs/types/EventHandler.html +++ b/docs/types/EventHandler.html @@ -1,3 +1,3 @@ -EventHandler | poolifier - v4.3.0

    Type AliasEventHandler<Worker>

    EventHandler<Worker>:
        | ErrorHandler<Worker>
        | ExitHandler<Worker>
        | MessageHandler<Worker>
        | OnlineHandler<Worker>

    Worker event handler.

    +EventHandler | poolifier - v4.4.0

    Type Alias EventHandler<Worker>

    EventHandler<Worker>:
        | ErrorHandler<Worker>
        | ExitHandler<Worker>
        | MessageHandler<Worker>
        | OnlineHandler<Worker>

    Worker event handler.

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      -
    +
    diff --git a/docs/types/ExitHandler.html b/docs/types/ExitHandler.html index 465d27a3..c8095785 100644 --- a/docs/types/ExitHandler.html +++ b/docs/types/ExitHandler.html @@ -1,3 +1,3 @@ -ExitHandler | poolifier - v4.3.0

    Type AliasExitHandler<Worker>

    ExitHandler<Worker>: ((this: Worker, exitCode: number) => void)

    Callback invoked when the worker exits successfully.

    +ExitHandler | poolifier - v4.4.0

    Type Alias ExitHandler<Worker>

    ExitHandler<Worker>: ((this: Worker, exitCode: number) => void)

    Callback invoked when the worker exits successfully.

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      -
    +
    diff --git a/docs/types/KillBehavior.html b/docs/types/KillBehavior.html index b21a88a1..a5d81f37 100644 --- a/docs/types/KillBehavior.html +++ b/docs/types/KillBehavior.html @@ -1,2 +1,2 @@ -KillBehavior | poolifier - v4.3.0

    Type AliasKillBehavior

    KillBehavior: keyof typeof KillBehaviors

    Kill behavior.

    -
    +KillBehavior | poolifier - v4.4.0

    Type Alias KillBehavior

    KillBehavior: keyof typeof KillBehaviors

    Kill behavior.

    +
    diff --git a/docs/types/KillHandler.html b/docs/types/KillHandler.html index 9853e8de..514b7208 100644 --- a/docs/types/KillHandler.html +++ b/docs/types/KillHandler.html @@ -1,2 +1,2 @@ -KillHandler | poolifier - v4.3.0

    Type AliasKillHandler

    KillHandler: (() => Promise<void> | void)

    Handler called when a worker is killed.

    -
    +KillHandler | poolifier - v4.4.0

    Type Alias KillHandler

    KillHandler: (() => Promise<void> | void)

    Handler called when a worker is killed.

    +
    diff --git a/docs/types/Measurement.html b/docs/types/Measurement.html index 6a27126d..94a67046 100644 --- a/docs/types/Measurement.html +++ b/docs/types/Measurement.html @@ -1,2 +1,2 @@ -Measurement | poolifier - v4.3.0

    Type AliasMeasurement

    Measurement: keyof typeof Measurements

    Measurement.

    -
    +Measurement | poolifier - v4.4.0

    Type Alias Measurement

    Measurement: keyof typeof Measurements

    Measurement.

    +
    diff --git a/docs/types/MessageHandler.html b/docs/types/MessageHandler.html index 9fa38274..72fea690 100644 --- a/docs/types/MessageHandler.html +++ b/docs/types/MessageHandler.html @@ -1,3 +1,3 @@ -MessageHandler | poolifier - v4.3.0

    Type AliasMessageHandler<Worker>

    MessageHandler<Worker>: ((this: Worker, message: unknown) => void)

    Callback invoked if the worker has received a message.

    +MessageHandler | poolifier - v4.4.0

    Type Alias MessageHandler<Worker>

    MessageHandler<Worker>: ((this: Worker, message: unknown) => void)

    Callback invoked if the worker has received a message.

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      -
    +
    diff --git a/docs/types/OnlineHandler.html b/docs/types/OnlineHandler.html index 482bdb89..c8852fde 100644 --- a/docs/types/OnlineHandler.html +++ b/docs/types/OnlineHandler.html @@ -1,3 +1,3 @@ -OnlineHandler | poolifier - v4.3.0

    Type AliasOnlineHandler<Worker>

    OnlineHandler<Worker>: ((this: Worker) => void)

    Callback invoked when the worker has started successfully.

    +OnlineHandler | poolifier - v4.4.0

    Type Alias OnlineHandler<Worker>

    OnlineHandler<Worker>: ((this: Worker) => void)

    Callback invoked when the worker has started successfully.

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      -
    +
    diff --git a/docs/types/PoolEvent.html b/docs/types/PoolEvent.html index 7f85e215..f8532e15 100644 --- a/docs/types/PoolEvent.html +++ b/docs/types/PoolEvent.html @@ -1,2 +1,2 @@ -PoolEvent | poolifier - v4.3.0

    Type AliasPoolEvent

    PoolEvent: keyof typeof PoolEvents

    Pool event.

    -
    +PoolEvent | poolifier - v4.4.0

    Type Alias PoolEvent

    PoolEvent: keyof typeof PoolEvents

    Pool event.

    +
    diff --git a/docs/types/PoolType.html b/docs/types/PoolType.html index 4646a399..1e03639e 100644 --- a/docs/types/PoolType.html +++ b/docs/types/PoolType.html @@ -1,2 +1,2 @@ -PoolType | poolifier - v4.3.0

    Type AliasPoolType

    PoolType: keyof typeof PoolTypes

    Pool type.

    -
    +PoolType | poolifier - v4.4.0

    Type Alias PoolType

    PoolType: keyof typeof PoolTypes

    Pool type.

    +
    diff --git a/docs/types/TaskAsyncFunction.html b/docs/types/TaskAsyncFunction.html index 9f00411d..0c20cc9e 100644 --- a/docs/types/TaskAsyncFunction.html +++ b/docs/types/TaskAsyncFunction.html @@ -1,7 +1,7 @@ -TaskAsyncFunction | poolifier - v4.3.0

    Type AliasTaskAsyncFunction<Data, Response>

    TaskAsyncFunction<Data, Response>: ((data?: Data) => Promise<Response>)

    Task asynchronous function that can be executed. +TaskAsyncFunction | poolifier - v4.4.0

    Type Alias TaskAsyncFunction<Data, Response>

    TaskAsyncFunction<Data, Response>: ((data?: Data) => Promise<Response>)

    Task asynchronous function that can be executed. This function must return a promise.

    Type Parameters

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

    Type declaration

      • (data?): Promise<Response>
      • Parameters

        • Optionaldata: Data

          Data sent to the worker.

        Returns Promise<Response>

        Execution response promise.

        -
    +
    diff --git a/docs/types/TaskFunction.html b/docs/types/TaskFunction.html index 69a82e0e..42781928 100644 --- a/docs/types/TaskFunction.html +++ b/docs/types/TaskFunction.html @@ -1,5 +1,5 @@ -TaskFunction | poolifier - v4.3.0

    Type AliasTaskFunction<Data, Response>

    Task function that can be executed. +TaskFunction | poolifier - v4.4.0

    Type Alias TaskFunction<Data, Response>

    Task function that can be executed. This function can be synchronous or asynchronous.

    Type Parameters

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

      -
    +
    diff --git a/docs/types/TaskFunctions.html b/docs/types/TaskFunctions.html index 83c3af97..48c17ae7 100644 --- a/docs/types/TaskFunctions.html +++ b/docs/types/TaskFunctions.html @@ -1,6 +1,6 @@ -TaskFunctions | poolifier - v4.3.0

    Type AliasTaskFunctions<Data, Response>

    TaskFunctions<Data, Response>: Record<string, TaskFunction<Data, Response> | TaskFunctionObject<Data, Response>>

    Tasks functions that can be executed. +TaskFunctions | poolifier - v4.4.0

    Type Alias TaskFunctions<Data, Response>

    TaskFunctions<Data, Response>: Record<string, TaskFunction<Data, Response> | TaskFunctionObject<Data, Response>>

    Tasks functions that can be executed. The key is the name of the task function or task function object. The value is the task function or task function object.

    Type Parameters

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

      -
    +
    diff --git a/docs/types/TaskSyncFunction.html b/docs/types/TaskSyncFunction.html index 2a09c6c5..218fdbc4 100644 --- a/docs/types/TaskSyncFunction.html +++ b/docs/types/TaskSyncFunction.html @@ -1,6 +1,6 @@ -TaskSyncFunction | poolifier - v4.3.0

    Type AliasTaskSyncFunction<Data, Response>

    TaskSyncFunction<Data, Response>: ((data?: Data) => Response)

    Task synchronous function that can be executed.

    +TaskSyncFunction | poolifier - v4.4.0

    Type Alias TaskSyncFunction<Data, Response>

    TaskSyncFunction<Data, Response>: ((data?: Data) => Response)

    Task synchronous function that can be executed.

    Type Parameters

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

    Type declaration

      • (data?): Response
      • Parameters

        • Optionaldata: Data

          Data sent to the worker.

        Returns Response

        Execution response.

        -
    +
    diff --git a/docs/types/ThreadPoolOptions.html b/docs/types/ThreadPoolOptions.html index 986e25e7..e570191f 100644 --- a/docs/types/ThreadPoolOptions.html +++ b/docs/types/ThreadPoolOptions.html @@ -1,2 +1,2 @@ -ThreadPoolOptions | poolifier - v4.3.0

    Type AliasThreadPoolOptions

    ThreadPoolOptions: PoolOptions<Worker>

    Options for a poolifier thread pool.

    -
    +ThreadPoolOptions | poolifier - v4.4.0

    Type Alias ThreadPoolOptions

    ThreadPoolOptions: PoolOptions<Worker>

    Options for a poolifier thread pool.

    +
    diff --git a/docs/types/WorkerChoiceStrategy.html b/docs/types/WorkerChoiceStrategy.html index dcc1070f..899a20f9 100644 --- a/docs/types/WorkerChoiceStrategy.html +++ b/docs/types/WorkerChoiceStrategy.html @@ -1,2 +1,2 @@ -WorkerChoiceStrategy | poolifier - v4.3.0

    Type AliasWorkerChoiceStrategy

    WorkerChoiceStrategy: keyof typeof WorkerChoiceStrategies

    Worker choice strategy.

    -
    +WorkerChoiceStrategy | poolifier - v4.4.0

    Type Alias WorkerChoiceStrategy

    WorkerChoiceStrategy: keyof typeof WorkerChoiceStrategies

    Worker choice strategy.

    +
    diff --git a/docs/types/WorkerType.html b/docs/types/WorkerType.html index 72252a5d..1bdccabc 100644 --- a/docs/types/WorkerType.html +++ b/docs/types/WorkerType.html @@ -1,2 +1,2 @@ -WorkerType | poolifier - v4.3.0

    Type AliasWorkerType

    WorkerType: keyof typeof WorkerTypes

    Worker type.

    -
    +WorkerType | poolifier - v4.4.0

    Type Alias WorkerType

    WorkerType: keyof typeof WorkerTypes

    Worker type.

    +
    diff --git a/docs/types/Writable.html b/docs/types/Writable.html index 32bf7562..bff7aa65 100644 --- a/docs/types/Writable.html +++ b/docs/types/Writable.html @@ -1,3 +1,3 @@ -Writable | poolifier - v4.3.0

    Type AliasWritable<T>Internal

    Writable<T>: {
        -readonly [P in keyof T]: T[P]
    }

    Remove readonly modifier from all properties of T.

    +Writable | poolifier - v4.4.0

    Type Alias Writable<T>Internal

    Writable<T>: {
        -readonly [P in keyof T]: T[P]
    }

    Remove readonly modifier from all properties of T.

    Type Parameters

    • T

      Type to remove readonly modifier.

      -
    +
    diff --git a/docs/variables/KillBehaviors.html b/docs/variables/KillBehaviors.html index 8eb82cbb..a381dde7 100644 --- a/docs/variables/KillBehaviors.html +++ b/docs/variables/KillBehaviors.html @@ -1,2 +1,2 @@ -KillBehaviors | poolifier - v4.3.0

    VariableKillBehaviorsConst

    KillBehaviors: Readonly<{
        HARD: "HARD";
        SOFT: "SOFT";
    }> = ...

    Enumeration of kill behaviors.

    -
    +KillBehaviors | poolifier - v4.4.0

    Variable KillBehaviorsConst

    KillBehaviors: Readonly<{
        HARD: "HARD";
        SOFT: "SOFT";
    }> = ...

    Enumeration of kill behaviors.

    +
    diff --git a/docs/variables/Measurements.html b/docs/variables/Measurements.html index 5554b7c1..3abe1521 100644 --- a/docs/variables/Measurements.html +++ b/docs/variables/Measurements.html @@ -1,2 +1,2 @@ -Measurements | poolifier - v4.3.0

    VariableMeasurementsConst

    Measurements: Readonly<{
        elu: "elu";
        runTime: "runTime";
        waitTime: "waitTime";
    }> = ...

    Enumeration of measurements.

    -
    +Measurements | poolifier - v4.4.0

    Variable MeasurementsConst

    Measurements: Readonly<{
        elu: "elu";
        runTime: "runTime";
        waitTime: "waitTime";
    }> = ...

    Enumeration of measurements.

    +
    diff --git a/docs/variables/PoolEvents.html b/docs/variables/PoolEvents.html index 4c6b1f70..b526d007 100644 --- a/docs/variables/PoolEvents.html +++ b/docs/variables/PoolEvents.html @@ -1,2 +1,2 @@ -PoolEvents | poolifier - v4.3.0

    VariablePoolEventsConst

    PoolEvents: Readonly<{
        backPressure: "backPressure";
        backPressureEnd: "backPressureEnd";
        busy: "busy";
        busyEnd: "busyEnd";
        destroy: "destroy";
        empty: "empty";
        error: "error";
        full: "full";
        fullEnd: "fullEnd";
        ready: "ready";
        taskError: "taskError";
    }> = ...

    Enumeration of pool events.

    -
    +PoolEvents | poolifier - v4.4.0

    Variable PoolEventsConst

    PoolEvents: Readonly<{
        backPressure: "backPressure";
        backPressureEnd: "backPressureEnd";
        busy: "busy";
        busyEnd: "busyEnd";
        destroy: "destroy";
        empty: "empty";
        error: "error";
        full: "full";
        fullEnd: "fullEnd";
        ready: "ready";
        taskError: "taskError";
    }> = ...

    Enumeration of pool events.

    +
    diff --git a/docs/variables/PoolTypes.html b/docs/variables/PoolTypes.html index bfb4b5d4..c3c717f2 100644 --- a/docs/variables/PoolTypes.html +++ b/docs/variables/PoolTypes.html @@ -1,2 +1,2 @@ -PoolTypes | poolifier - v4.3.0

    VariablePoolTypesConst

    PoolTypes: Readonly<{
        dynamic: "dynamic";
        fixed: "fixed";
    }> = ...

    Enumeration of pool types.

    -
    +PoolTypes | poolifier - v4.4.0

    Variable PoolTypesConst

    PoolTypes: Readonly<{
        dynamic: "dynamic";
        fixed: "fixed";
    }> = ...

    Enumeration of pool types.

    +
    diff --git a/docs/variables/WorkerChoiceStrategies.html b/docs/variables/WorkerChoiceStrategies.html index a5d90d6d..ece960d7 100644 --- a/docs/variables/WorkerChoiceStrategies.html +++ b/docs/variables/WorkerChoiceStrategies.html @@ -1,2 +1,2 @@ -WorkerChoiceStrategies | poolifier - v4.3.0

    VariableWorkerChoiceStrategiesConst

    WorkerChoiceStrategies: Readonly<{
        FAIR_SHARE: "FAIR_SHARE";
        INTERLEAVED_WEIGHTED_ROUND_ROBIN: "INTERLEAVED_WEIGHTED_ROUND_ROBIN";
        LEAST_BUSY: "LEAST_BUSY";
        LEAST_ELU: "LEAST_ELU";
        LEAST_USED: "LEAST_USED";
        ROUND_ROBIN: "ROUND_ROBIN";
        WEIGHTED_ROUND_ROBIN: "WEIGHTED_ROUND_ROBIN";
    }> = ...

    Enumeration of worker choice strategies.

    -
    +WorkerChoiceStrategies | poolifier - v4.4.0

    Variable WorkerChoiceStrategiesConst

    WorkerChoiceStrategies: Readonly<{
        FAIR_SHARE: "FAIR_SHARE";
        INTERLEAVED_WEIGHTED_ROUND_ROBIN: "INTERLEAVED_WEIGHTED_ROUND_ROBIN";
        LEAST_BUSY: "LEAST_BUSY";
        LEAST_ELU: "LEAST_ELU";
        LEAST_USED: "LEAST_USED";
        ROUND_ROBIN: "ROUND_ROBIN";
        WEIGHTED_ROUND_ROBIN: "WEIGHTED_ROUND_ROBIN";
    }> = ...

    Enumeration of worker choice strategies.

    +
    diff --git a/docs/variables/WorkerTypes.html b/docs/variables/WorkerTypes.html index db52d0ed..d47937ba 100644 --- a/docs/variables/WorkerTypes.html +++ b/docs/variables/WorkerTypes.html @@ -1,2 +1,2 @@ -WorkerTypes | poolifier - v4.3.0

    VariableWorkerTypesConst

    WorkerTypes: Readonly<{
        cluster: "cluster";
        thread: "thread";
    }> = ...

    Enumeration of worker types.

    -
    +WorkerTypes | poolifier - v4.4.0

    Variable WorkerTypesConst

    WorkerTypes: Readonly<{
        cluster: "cluster";
        thread: "thread";
    }> = ...

    Enumeration of worker types.

    +
    -- 2.34.1