1 import type { Worker
as ClusterWorker
} from
'cluster'
2 import type { Worker
as WorkerThread
} from
'worker_threads'
3 import type { Draft
} from
'../utility-types'
6 * Poolifier supported worker type.
8 export type WorkerType
= WorkerThread
& ClusterWorker
& Draft
<MessageChannel
>
11 * Callback invoked if the worker has received a message.
13 export type MessageHandler
<Worker
> = (this: Worker
, m
: unknown
) => void
16 * Callback invoked if the worker raised an error.
18 export type ErrorHandler
<Worker
> = (this: Worker
, e
: Error) => void
21 * Callback invoked when the worker has started successfully.
23 export type OnlineHandler
<Worker
> = (this: Worker
) => void
26 * Callback invoked when the worker exits successfully.
28 export type ExitHandler
<Worker
> = (this: Worker
, code
: number) => void
31 * Basic interface that describes the minimum required implementation of listener events for a pool worker.
33 export interface IPoolWorker
{
39 * Register a listener to the message event.
41 * @param event `'message'`.
42 * @param handler The message handler.
44 on(event
: 'message', handler
: MessageHandler
<this>): void
46 * Register a listener to the error event.
48 * @param event `'error'`.
49 * @param handler The error handler.
51 on(event
: 'error', handler
: ErrorHandler
<this>): void
53 * Register a listener to the online event.
55 * @param event `'online'`.
56 * @param handler The online handler.
58 on(event
: 'online', handler
: OnlineHandler
<this>): void
60 * Register a listener to the exit event.
62 * @param event `'exit'`.
63 * @param handler The exit handler.
65 on(event
: 'exit', handler
: ExitHandler
<this>): void
67 * Register a listener to the exit event that will only performed once.
69 * @param event `'exit'`.
70 * @param handler The exit handler.
72 once(event
: 'exit', handler
: ExitHandler
<this>): void