Benchmarks and performance enhancements (#209)
[poolifier.git] / src / utility-types.ts
index 2403b8a257b0377e441a4dc2568b49571be4cdc2..9441fec4e420292905a23150d73580e73b3411cd 100644 (file)
@@ -1,5 +1,6 @@
 import type { Worker } from 'cluster'
 import type { MessagePort } from 'worker_threads'
+import type { IWorker } from './pools/abstract-pool'
 import type { KillBehavior } from './worker/worker-options'
 
 /**
@@ -37,3 +38,27 @@ export interface MessageValue<
    */
   readonly parent?: MainWorker
 }
+
+/**
+ * An object holding the worker that will be used to resolve/rejects the promise later on.
+ *
+ * @template Worker Type of worker.
+ * @template Response Type of response of execution. This can only be serializable data.
+ */
+export interface PromiseWorkerResponseWrapper<
+  Worker extends IWorker,
+  Response = unknown
+> {
+  /**
+   * Resolve callback to fulfill the promise.
+   */
+  readonly resolve: (value: Response) => void
+  /**
+   * Reject callback to reject the promise.
+   */
+  readonly reject: (reason?: string) => void
+  /**
+   * The worker that has the assigned task.
+   */
+  readonly worker: Worker
+}