feat: conditional task performance computation at the worker level
[poolifier.git] / src / utility-types.ts
index cc29801f9afc81e23d25ce6f9e91e49ed60ae831..9cdf6b0a7e82f9d1e3da5fb434537ca8e2d943f9 100644 (file)
@@ -11,6 +11,15 @@ import type { IWorker, Task } from './pools/worker'
  */
 export type Draft<T> = { -readonly [P in keyof T]?: T[P] }
 
+/**
+ * Performance statistics computation.
+ */
+export interface WorkerStatistics {
+  runTime: boolean
+  waitTime: boolean
+  elu: boolean
+}
+
 /**
  * Message object that is passed between main worker and worker.
  *
@@ -50,54 +59,12 @@ export interface MessageValue<
    * Reference to main worker.
    */
   readonly parent?: MainWorker
+  /**
+   * Whether to compute the given statistics or not.
+   */
+  readonly statistics?: WorkerStatistics
 }
 
-/**
- * Worker synchronous function that can be executed.
- *
- * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
- * @typeParam Response - Type of execution response. This can only be serializable data.
- */
-export type WorkerSyncFunction<Data = unknown, Response = unknown> = (
-  data?: Data
-) => Response
-
-/**
- * Worker asynchronous function that can be executed.
- * This function must return a promise.
- *
- * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
- * @typeParam Response - Type of execution response. This can only be serializable data.
- */
-export type WorkerAsyncFunction<Data = unknown, Response = unknown> = (
-  data?: Data
-) => Promise<Response>
-
-/**
- * Worker function that can be executed.
- * This function can be synchronous or asynchronous.
- *
- * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
- * @typeParam Response - Type of execution response. This can only be serializable data.
- */
-export type WorkerFunction<Data = unknown, Response = unknown> =
-  | WorkerSyncFunction<Data, Response>
-  | WorkerAsyncFunction<Data, Response>
-
-/**
- * Worker functions that can be executed.
- * This object can contain synchronous or asynchronous functions.
- * The key is the name of the function.
- * The value is the function itself.
- *
- * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
- * @typeParam Response - Type of execution response. This can only be serializable data.
- */
-export type TaskFunctions<Data = unknown, Response = unknown> = Record<
-string,
-WorkerFunction<Data, Response>
->
-
 /**
  * An object holding the execution response promise resolve/reject callbacks.
  *