repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of github.com:jerome-benoit/poolifier
[poolifier.git]
/
src
/
pools
/
worker.ts
diff --git
a/src/pools/worker.ts
b/src/pools/worker.ts
index 4d935a113336921a5f49e6858046b07a863096fd..93e4eda4c8e80aabfc1b13503e87ef4b0dc7173b 100644
(file)
--- a/
src/pools/worker.ts
+++ b/
src/pools/worker.ts
@@
-1,4
+1,3
@@
-import type { EventLoopUtilization } from 'node:perf_hooks'
import type { CircularArray } from '../circular-array'
import type { Queue } from '../queue'
import type { CircularArray } from '../circular-array'
import type { Queue } from '../queue'
@@
-7,7
+6,7
@@
import type { Queue } from '../queue'
*/
export type MessageHandler<Worker extends IWorker> = (
this: Worker,
*/
export type MessageHandler<Worker extends IWorker> = (
this: Worker,
- m: unknown
+ m
essage
: unknown
) => void
/**
) => void
/**
@@
-15,7
+14,7
@@
export type MessageHandler<Worker extends IWorker> = (
*/
export type ErrorHandler<Worker extends IWorker> = (
this: Worker,
*/
export type ErrorHandler<Worker extends IWorker> = (
this: Worker,
- e: Error
+ e
rror
: Error
) => void
/**
) => void
/**
@@
-28,13
+27,13
@@
export type OnlineHandler<Worker extends IWorker> = (this: Worker) => void
*/
export type ExitHandler<Worker extends IWorker> = (
this: Worker,
*/
export type ExitHandler<Worker extends IWorker> = (
this: Worker,
-
c
ode: number
+
exitC
ode: number
) => void
/**
* Message object that is passed as a task between main worker and worker.
*
) => void
/**
* 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 s
erializ
able data.
+ * @typeParam Data - Type of data sent to the worker. This can only be s
tructured-clone
able data.
* @internal
*/
export interface Task<Data = unknown> {
* @internal
*/
export interface Task<Data = unknown> {
@@
-57,54
+56,88
@@
export interface Task<Data = unknown> {
}
/**
}
/**
- * Measure statistics.
+ * Measure
ment
statistics.
*
* @internal
*/
*
* @internal
*/
-export interface MeasureStatistics {
+export interface Measure
ment
Statistics {
/**
/**
- * Measure
aggregation
.
+ * Measure
ment aggregate
.
*/
*/
- aggregat
ion
: number
+ aggregat
e
: number
/**
/**
- * Measure average.
+ * Measure
ment
average.
*/
average: number
/**
*/
average: number
/**
- * Measure median.
+ * Measure
ment
median.
*/
median: number
/**
*/
median: number
/**
- * Measure history.
+ * Measure
ment
history.
*/
*/
- history: CircularArray<number>
+
readonly
history: CircularArray<number>
}
/**
}
/**
- *
Task
statistics.
+ *
Event loop utilization measurement
statistics.
*
* @internal
*/
*
* @internal
*/
+export interface EventLoopUtilizationMeasurementStatistics {
+ readonly idle: MeasurementStatistics
+ readonly active: MeasurementStatistics
+ utilization: number
+}
+/**
+ * Task statistics.
+ *
+ * @internal
+ */
export interface TaskStatistics {
/**
export interface TaskStatistics {
/**
- * Number of
tasks executed
.
+ * Number of
executed tasks
.
*/
executed: number
/**
*/
executed: number
/**
- * Number of
tasks executing
.
+ * Number of
executing tasks
.
*/
executing: number
/**
*/
executing: number
/**
- * Number of
tasks queued
.
+ * Number of
queued tasks
.
*/
*/
- queued: number
+
readonly
queued: number
/**
/**
- * Number of tasks failed.
+ * Maximum number of queued tasks.
+ */
+ readonly maxQueued: number
+ /**
+ * Number of failed tasks.
*/
failed: number
}
*/
failed: number
}
+/**
+ * Worker information.
+ *
+ * @internal
+ */
+export interface WorkerInfo {
+ /**
+ * Worker id.
+ */
+ readonly id: number | undefined
+ /**
+ * Started flag.
+ */
+ started: boolean
+ /**
+ * Shared buffer.
+ */
+ readonly sharedBuffer?: Int32Array
+}
+
/**
* Worker usage statistics.
*
/**
* Worker usage statistics.
*
@@
-114,19
+147,19
@@
export interface WorkerUsage {
/**
* Tasks statistics.
*/
/**
* Tasks statistics.
*/
- tasks: TaskStatistics
+
readonly
tasks: TaskStatistics
/**
* Tasks runtime statistics.
*/
/**
* Tasks runtime statistics.
*/
- r
unTime: Measure
Statistics
+ r
eadonly runTime: Measurement
Statistics
/**
* Tasks wait time statistics.
*/
/**
* Tasks wait time statistics.
*/
-
waitTime: Measure
Statistics
+
readonly waitTime: Measurement
Statistics
/**
/**
- *
Event loop utilization
.
+ *
Tasks event loop utilization statistics
.
*/
*/
- elu: EventLoopUtilization | undefined
+ readonly elu: EventLoopUtilizationMeasurementStatistics
}
/**
}
/**
@@
-134,7
+167,12
@@
export interface WorkerUsage {
*/
export interface IWorker {
/**
*/
export interface IWorker {
/**
- * Register an event listener.
+ * Worker id.
+ */
+ readonly id?: number
+ readonly threadId?: number
+ /**
+ * Registers an event listener.
*
* @param event - The event.
* @param handler - The event handler.
*
* @param event - The event.
* @param handler - The event handler.
@@
-144,7
+182,7
@@
export interface IWorker {
((event: 'online', handler: OnlineHandler<this>) => void) &
((event: 'exit', handler: ExitHandler<this>) => void)
/**
((event: 'online', handler: OnlineHandler<this>) => void) &
((event: 'exit', handler: ExitHandler<this>) => void)
/**
- * Register a listener to the exit event that will only be performed once.
+ * Register
s
a listener to the exit event that will only be performed once.
*
* @param event - `'exit'`.
* @param handler - The exit handler.
*
* @param event - `'exit'`.
* @param handler - The exit handler.
@@
-156,7
+194,7
@@
export interface IWorker {
* Worker node interface.
*
* @typeParam Worker - Type of worker.
* Worker node interface.
*
* @typeParam Worker - Type of worker.
- * @typeParam Data - Type of data sent to the worker. This can only be s
erializ
able data.
+ * @typeParam Data - Type of data sent to the worker. This can only be s
tructured-clone
able data.
* @internal
*/
export interface WorkerNode<Worker extends IWorker, Data = unknown> {
* @internal
*/
export interface WorkerNode<Worker extends IWorker, Data = unknown> {
@@
-164,10
+202,14
@@
export interface WorkerNode<Worker extends IWorker, Data = unknown> {
* Worker node worker.
*/
readonly worker: Worker
* Worker node worker.
*/
readonly worker: Worker
+ /**
+ * Worker node worker info.
+ */
+ readonly info: WorkerInfo
/**
* Worker node worker usage statistics.
*/
/**
* Worker node worker usage statistics.
*/
-
workerU
sage: WorkerUsage
+
u
sage: WorkerUsage
/**
* Worker node tasks queue.
*/
/**
* Worker node tasks queue.
*/