) => void
/**
- * Worker task interface.
+ * Message object that is passed as a task between main worker and worker.
+ *
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @internal
*/
export interface Task<Data = unknown> {
/**
- * Worker task data.
+ * Input data that will be passed to the worker.
*/
- data: Data
+ readonly data?: Data
/**
- * Task UUID.
+ * UUID of the message.
*/
- id: string
+ readonly id?: string
}
/**
* Worker tasks usage statistics.
+ *
+ * @internal
*/
export interface TasksUsage {
+ /**
+ * Number of tasks executed.
+ */
run: number
+ /**
+ * Number of tasks running.
+ */
running: number
+ /**
+ * Tasks runtime.
+ */
runTime: number
+ /**
+ * Tasks runtime history.
+ */
runTimeHistory: CircularArray<number>
+ /**
+ * Average tasks runtime.
+ */
avgRunTime: number
+ /**
+ * Median tasks runtime.
+ */
medRunTime: number
+ /**
+ * Number of tasks errored.
+ */
error: number
}
/**
* Worker node interface.
+ *
+ * @typeParam Worker - Type of worker.
+ * @typeParam Data - Type of data sent to the worker. This can only be serializable data.
+ * @internal
*/
export interface WorkerNode<Worker extends IWorker, Data = unknown> {
- worker: Worker
+ /**
+ * Worker node worker.
+ */
+ readonly worker: Worker
+ /**
+ * Worker node tasks usage statistics.
+ */
tasksUsage: TasksUsage
- tasksQueue: Array<Task<Data>>
+ /**
+ * Worker node tasks queue.
+ */
+ readonly tasksQueue: Array<Task<Data>>
}