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