]>
Commit | Line | Data |
---|---|---|
1 | /** | |
2 | * Enumeration of kill behaviors. | |
3 | */ | |
4 | export const KillBehaviors: Readonly<{ HARD: 'HARD'; SOFT: 'SOFT' }> = | |
5 | Object.freeze({ | |
6 | /** | |
7 | * If `currentTime - lastActiveTime` is greater than `maxInactiveTime` but the worker is stealing tasks or a task is executing or queued, then the worker will be deleted. | |
8 | */ | |
9 | HARD: 'HARD', | |
10 | /** | |
11 | * If `currentTime - lastActiveTime` is greater than `maxInactiveTime` but the worker is stealing tasks or a task is executing or queued, then the worker **wont** be deleted. | |
12 | */ | |
13 | SOFT: 'SOFT', | |
14 | } as const) | |
15 | ||
16 | /** | |
17 | * Kill behavior. | |
18 | */ | |
19 | export type KillBehavior = keyof typeof KillBehaviors | |
20 | ||
21 | /** | |
22 | * Handler called when a worker is killed. | |
23 | */ | |
24 | export type KillHandler = () => Promise<void> | void | |
25 | ||
26 | /** | |
27 | * Options for workers. | |
28 | */ | |
29 | export interface WorkerOptions { | |
30 | /** | |
31 | * `killBehavior` dictates if your worker will be deleted in case a task is active on it. | |
32 | * | |
33 | * - SOFT: If `currentTime - lastActiveTime` is greater than `maxInactiveTime` but the worker is stealing tasks or a task is executing or queued, then the worker **won't** be deleted. | |
34 | * - HARD: If `currentTime - lastActiveTime` is greater than `maxInactiveTime` but the worker is stealing tasks or a task is executing or queued, then the worker will be deleted. | |
35 | * | |
36 | * This option only apply to the newly created workers. | |
37 | * @defaultValue KillBehaviors.SOFT | |
38 | */ | |
39 | killBehavior?: KillBehavior | |
40 | /** | |
41 | * The function to call when a worker is killed. | |
42 | * @defaultValue `() => {}` | |
43 | */ | |
44 | killHandler?: KillHandler | |
45 | /** | |
46 | * Maximum waiting time in milliseconds for tasks on newly created workers. It must be greater or equal than 5. | |
47 | * | |
48 | * After this time, newly created workers will be terminated. | |
49 | * The last active time of your worker will be updated when it terminates a task. | |
50 | * | |
51 | * - If `killBehavior` is set to `KillBehaviors.HARD` this value represents also the timeout for the tasks that you submit to the pool, | |
52 | * when this timeout expires your tasks is interrupted before completion and removed. The worker is killed if is not part of the minimum size of the pool. | |
53 | * - If `killBehavior` is set to `KillBehaviors.SOFT` your tasks have no timeout and your workers will not be terminated until your task is completed. | |
54 | * @defaultValue 60000 | |
55 | */ | |
56 | maxInactiveTime?: number | |
57 | } |