Commit | Line | Data |
---|---|---|
bdaf31cd JB |
1 | import type { Worker as ClusterWorker } from 'cluster' |
2 | import type { Worker as WorkerThread } from 'worker_threads' | |
3 | import type { Draft } from '../utility-types' | |
4 | ||
5 | /** | |
6 | * Poolifier supported worker type. | |
7 | */ | |
8 | export type WorkerType = WorkerThread & ClusterWorker & Draft<MessageChannel> | |
9 | ||
10 | /** | |
11 | * Callback invoked if the worker has received a message. | |
12 | */ | |
13 | export type MessageHandler<Worker> = (this: Worker, m: unknown) => void | |
14 | ||
15 | /** | |
16 | * Callback invoked if the worker raised an error. | |
17 | */ | |
18 | export type ErrorHandler<Worker> = (this: Worker, e: Error) => void | |
19 | ||
20 | /** | |
21 | * Callback invoked when the worker has started successfully. | |
22 | */ | |
23 | export type OnlineHandler<Worker> = (this: Worker) => void | |
24 | ||
25 | /** | |
26 | * Callback invoked when the worker exits successfully. | |
27 | */ | |
28 | export type ExitHandler<Worker> = (this: Worker, code: number) => void | |
29 | ||
30 | /** | |
31 | * Basic interface that describes the minimum required implementation of listener events for a pool worker. | |
32 | */ | |
33 | export interface IPoolWorker { | |
34 | /** | |
35 | * Worker identifier. | |
36 | */ | |
37 | readonly id?: number | |
38 | /** | |
39 | * Register a listener to the message event. | |
40 | * | |
41 | * @param event `'message'`. | |
42 | * @param handler The message handler. | |
43 | */ | |
44 | on(event: 'message', handler: MessageHandler<this>): void | |
45 | /** | |
46 | * Register a listener to the error event. | |
47 | * | |
48 | * @param event `'error'`. | |
49 | * @param handler The error handler. | |
50 | */ | |
51 | on(event: 'error', handler: ErrorHandler<this>): void | |
52 | /** | |
53 | * Register a listener to the online event. | |
54 | * | |
55 | * @param event `'online'`. | |
56 | * @param handler The online handler. | |
57 | */ | |
58 | on(event: 'online', handler: OnlineHandler<this>): void | |
59 | /** | |
60 | * Register a listener to the exit event. | |
61 | * | |
62 | * @param event `'exit'`. | |
63 | * @param handler The exit handler. | |
64 | */ | |
65 | on(event: 'exit', handler: ExitHandler<this>): void | |
66 | /** | |
67 | * Register a listener to the exit event that will only performed once. | |
68 | * | |
69 | * @param event `'exit'`. | |
70 | * @param handler The exit handler. | |
71 | */ | |
72 | once(event: 'exit', handler: ExitHandler<this>): void | |
73 | } |