*
* @param message - Message received.
*/
- protected messageListener (message: MessageValue<Data, MainWorker>): void {
+ protected messageListener (
+ message: MessageValue<Data, Data, MainWorker>
+ ): void {
if (message.id != null && message.data != null) {
// Task message received
const fn = this.getTaskFunction(message.name)
*
* @param message - The response message.
*/
- protected abstract sendToMainWorker (message: MessageValue<Response>): void
+ protected abstract sendToMainWorker (
+ message: MessageValue<Response, Data>
+ ): void
/**
* Checks if the worker should be terminated, because its living too long.
message: MessageValue<Data>
): void {
try {
- let taskPerformance = this.beginTaskPerformance(message)
+ let taskPerformance = this.beginTaskPerformance()
const res = fn(message.data)
taskPerformance = this.endTaskPerformance(taskPerformance)
this.sendToMainWorker({
} catch (e) {
const err = this.handleError(e as Error)
this.sendToMainWorker({
- error: err,
- errorData: message.data,
+ taskError: {
+ message: err,
+ data: message.data
+ },
id: message.id
})
} finally {
fn: WorkerAsyncFunction<Data, Response>,
message: MessageValue<Data>
): void {
- let taskPerformance = this.beginTaskPerformance(message)
+ let taskPerformance = this.beginTaskPerformance()
fn(message.data)
.then(res => {
taskPerformance = this.endTaskPerformance(taskPerformance)
.catch(e => {
const err = this.handleError(e as Error)
this.sendToMainWorker({
- error: err,
- errorData: message.data,
+ taskError: {
+ message: err,
+ data: message.data
+ },
id: message.id
})
})
return fn
}
- private beginTaskPerformance (message: MessageValue<Data>): TaskPerformance {
- const timestamp = performance.now()
+ private beginTaskPerformance (): TaskPerformance {
return {
- timestamp,
- ...(this.statistics.waitTime && {
- waitTime: timestamp - (message.timestamp ?? timestamp)
- }),
+ timestamp: performance.now(),
...(this.statistics.elu && { elu: performance.eventLoopUtilization() })
}
}