Merge dependabot/npm_and_yarn/examples/typescript/http-server-pool/fastify-cluster...
[poolifier.git] / src / pools / worker.ts
index e6dd0fae91cd7b0cfd29b14ba828b89d131854d0..14c8dbe1e1d444f5404e8562c1c59ecf1585d869 100644 (file)
@@ -224,6 +224,18 @@ export interface IWorkerNode<Worker extends IWorker, Data = unknown> {
    * This is the number of tasks that can be enqueued before the worker node has back pressure.
    */
   tasksQueueBackPressureSize: number
+  /**
+   * Callback invoked when worker node tasks queue is back pressured.
+   *
+   * @param workerId - The worker id.
+   */
+  onBackPressure?: (workerId: number) => void
+  /**
+   * Callback invoked when worker node tasks queue is empty.
+   *
+   * @param workerId - The worker id.
+   */
+  onEmptyQueue?: (workerId: number) => void
   /**
    * Tasks queue size.
    *
@@ -237,12 +249,25 @@ export interface IWorkerNode<Worker extends IWorker, Data = unknown> {
    * @returns The tasks queue size.
    */
   readonly enqueueTask: (task: Task<Data>) => number
+  /**
+   * Prepends a task to the tasks queue.
+   *
+   * @param task - The task to prepend.
+   * @returns The tasks queue size.
+   */
+  readonly unshiftTask: (task: Task<Data>) => number
   /**
    * Dequeue task.
    *
    * @returns The dequeued task.
    */
   readonly dequeueTask: () => Task<Data> | undefined
+  /**
+   * Pops a task from the tasks queue.
+   *
+   * @returns The popped task.
+   */
+  readonly popTask: () => Task<Data> | undefined
   /**
    * Clears tasks queue.
    */