import type { CircularArray } from '../circular-array'
+import type { Queue } from '../queue'
/**
* Callback invoked if the worker has received a message.
* @internal
*/
export interface Task<Data = unknown> {
+ /**
+ * Task name.
+ */
+ readonly name?: string
/**
* Task input data that will be passed to the worker.
*/
readonly data?: Data
/**
- * UUID of the message.
+ * Submission timestamp.
+ */
+ readonly submissionTimestamp?: number
+ /**
+ * Message UUID.
*/
readonly id?: string
}
* Median tasks runtime.
*/
medRunTime: number
+ /**
+ * Tasks wait time.
+ */
+ waitTime: number
+ /**
+ * Tasks wait time history.
+ */
+ waitTimeHistory: CircularArray<number>
+ /**
+ * Average tasks wait time.
+ */
+ avgWaitTime: number
+ /**
+ * Median tasks wait time.
+ */
+ medWaitTime: number
/**
* Number of tasks errored.
*/
* Register an event listener.
*
* @param event - The event.
- * @param handler - The event listener.
+ * @param handler - The event handler.
*/
on: ((event: 'message', handler: MessageHandler<this>) => void) &
((event: 'error', handler: ErrorHandler<this>) => void) &
((event: 'online', handler: OnlineHandler<this>) => void) &
((event: 'exit', handler: ExitHandler<this>) => void)
/**
- * Register a listener to the exit event that will only performed once.
+ * Register a listener to the exit event that will only be performed once.
*
* @param event - `'exit'`.
* @param handler - The exit handler.
/**
* Worker node tasks queue.
*/
- readonly tasksQueue: Array<Task<Data>>
+ readonly tasksQueue: Queue<Task<Data>>
}