feat: use monotonic high resolution timer for worker tasks statistics
[poolifier.git] / src / utility-types.ts
index 769949e0f76c29ce5cc76e49bf3e0b162c89f63c..05af4e3d396b7c89d22ba0c895ceb6c4649e5f42 100644 (file)
@@ -1,7 +1,7 @@
-import type { Worker as ClusterWorker } from 'cluster'
-import type { MessagePort } from 'worker_threads'
-import type { IWorker } from './pools/abstract-pool'
+import type { Worker as ClusterWorker } from 'node:cluster'
+import type { MessagePort } from 'node:worker_threads'
 import type { KillBehavior } from './worker/worker-options'
+import type { IPoolWorker } from './pools/pool-worker'
 
 /**
  * Make all properties in T non-readonly.
@@ -22,7 +22,7 @@ export interface MessageValue<
   /**
    * Id of the message.
    */
-  readonly id?: number
+  readonly id?: string
   /**
    * Kill code.
    */
@@ -31,22 +31,26 @@ export interface MessageValue<
    * Error.
    */
   readonly error?: string
+  /**
+   * Runtime.
+   */
+  readonly runTime?: number
   /**
    * Reference to main worker.
    *
-   * _Only for internal use_
+   * Only for internal use.
    */
   readonly parent?: MainWorker
 }
 
 /**
- * An object holding the worker that will be used to resolve/rejects the promise later on.
+ * An object holding the execution response promise resolve/reject callbacks.
  *
- * @template Worker Type of worker.
- * @template Response Type of response of execution. This can only be serializable data.
+ * @typeParam Worker - Type of worker.
+ * @typeParam Response - Type of execution response. This can only be serializable data.
  */
-export interface PromiseWorkerResponseWrapper<
-  Worker extends IWorker,
+export interface PromiseResponseWrapper<
+  Worker extends IPoolWorker,
   Response = unknown
 > {
   /**
@@ -58,7 +62,7 @@ export interface PromiseWorkerResponseWrapper<
    */
   readonly reject: (reason?: string) => void
   /**
-   * The worker that has the assigned task.
+   * The worker handling the promise.
    */
   readonly worker: Worker
 }