Commit | Line | Data |
---|---|---|
4c35177b | 1 | /** |
1a81f8af | 2 | * Enumeration of kill behaviors. |
4c35177b | 3 | */ |
59776ec5 JB |
4 | export const KillBehaviors: Readonly<{ SOFT: 'SOFT', HARD: 'HARD' }> = |
5 | Object.freeze({ | |
6 | /** | |
152e87a8 | 7 | * 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. |
59776ec5 JB |
8 | */ |
9 | SOFT: 'SOFT', | |
10 | /** | |
152e87a8 | 11 | * 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. |
59776ec5 JB |
12 | */ |
13 | HARD: 'HARD' | |
14 | } as const) | |
1a81f8af S |
15 | |
16 | /** | |
17 | * Kill behavior. | |
18 | */ | |
19 | export type KillBehavior = keyof typeof KillBehaviors | |
20 | ||
df9aaf20 JB |
21 | /** |
22 | * Handler called when a worker is killed. | |
23 | */ | |
07588f30 | 24 | export type KillHandler = () => void | Promise<void> |
df9aaf20 | 25 | |
729c563d S |
26 | /** |
27 | * Options for workers. | |
28 | */ | |
325f50bc | 29 | export interface WorkerOptions { |
968dbbe7 JB |
30 | /** |
31 | * `killBehavior` dictates if your worker will be deleted in case a task is active on it. | |
32 | * | |
152e87a8 JB |
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. | |
968dbbe7 JB |
35 | * |
36 | * This option only apply to the newly created workers. | |
37 | * | |
38 | * @defaultValue KillBehaviors.SOFT | |
39 | */ | |
40 | killBehavior?: KillBehavior | |
325f50bc | 41 | /** |
3c18d144 | 42 | * Maximum waiting time in milliseconds for tasks on newly created workers. It must be greater or equal than 5. |
1a81f8af | 43 | * |
729c563d | 44 | * After this time, newly created workers will be terminated. |
b0a4db63 | 45 | * The last active time of your worker will be updated when it terminates a task. |
1a81f8af S |
46 | * |
47 | * - If `killBehavior` is set to `KillBehaviors.HARD` this value represents also the timeout for the tasks that you submit to the pool, | |
b0a4db63 | 48 | * 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. |
15eacd5d | 49 | * - If `killBehavior` is set to `KillBehaviors.SOFT` your tasks have no timeout and your workers will not be terminated until your task is completed. |
325f50bc | 50 | * |
1ff6b9de | 51 | * @defaultValue 60000 |
325f50bc S |
52 | */ |
53 | maxInactiveTime?: number | |
968dbbe7 JB |
54 | /** |
55 | * The function to call when a worker is killed. | |
2324f8c9 JB |
56 | * |
57 | * @defaultValue `() => {}` | |
968dbbe7 JB |
58 | */ |
59 | killHandler?: KillHandler | |
325f50bc | 60 | } |